| Anchor | 
|---|
| |  | alien method | 
|---|
 |  | alien method | 
|---|
 | 
| Wiki Markup | 
|---|
*
alien   method* From   the   perspective   of   a   class   C,   an   alien   method   is   one   whose   behavior   is   not   fully   specified   by   C.   This   includes   methods   in   other   classes   as   well   as   overridable   methods   (neither   private   nor   final)   in   C   itself  \ [[Goetz 2006|AA. References#Goetz 06]\]Goetz 2006a].| Anchor | 
|---|
| |  | anti-pattern | 
|---|
 |  | anti-pattern | 
|---|
 | 
unmigrated-wiki-markup*
anti-pattern* An   anti-pattern   is   a   pattern   that   may   be   commonly   used   but   is   ineffective   and/or   counterproductive   in   practice  \[ [Laplante   2005|AA. References#Laplante 05]\].| Anchor | 
|---|
| |  | availability | 
|---|
 |  | availability | 
|---|
 | 
| Wiki Markup | 
|---|
| *availability* The degree to which a system or component is operational and accessible when required for use. Often expressed as a probability \[[IEEE Std 610.12 1990|AA. References#IEEE Std 610.12 1990]\]. | 
availability 
The degree to which a system or component is operational and accessible when required for use. Often expressed as a probability [IEEE Std 610.12 1990].
big-endianunmigrated-wiki-markup*big-endian* "Multibyte   data   items   are   always   stored   in   big-endian   order,   where   the   high   bytes   come   first."   [[JVMSpec  1999|AA. References#JVMSpec 99]] [Chapter 4 "The {{class}} File Format."|http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html] This term refers to the tension between Lilliput and Blefuscu (regarding whether to open soft-boiled eggs from the large or the small end) in Jonathan Swift's satirical novel _Gulliver's Travels_; it was first applied to the question of byte-ordering by Danny Cohen \[[Cohen 1981|AA. References#Cohen 81]\].1999, Chapter 4, "The class File Format"]. This term refers to the tension between Lilliput and Blefuscu (regarding whether to open soft-boiled eggs from the large or the small end) in Jonathan Swift's satirical novel Gulliver's Travels; it was first applied to the question of byte-ordering by Danny Cohen [Cohen 1981].| Anchor | 
|---|
| |  | canonicalization | 
|---|
 |  | canonicalization | 
|---|
 | 
canonicalization Reducing the input to its equivalent simplest known form.
| Anchor | 
|---|
| |  | class variable | 
|---|
 |  | class variable | 
|---|
 | 
| Wiki Markup | 
|---|
*class   variable * A   class   variable   is   a   field   declared   using   the   keyword  {{ static }}  within   a   class   declaration ,  or   with   or   without   the   keyword  {{ static }}  within   an   interface   declaration.   A   class   variable   is   created   when   its   class   or   interface   is   prepared   and   is   initialized   to   a   default   value.   The   class   variable   effectively   ceases   to   exist   when   its   class   or   interface   is   unloaded  \ [[JLS   2005|AA. References#JLS 05]\].| Anchor | 
|---|
| |  | condition predicate | 
|---|
 |  | condition predicate | 
|---|
 | 
| Wiki Markup | 
|---|
*condition   predicate* An   expression   constructed   from   the   state   variables   of   a   class   that   must   be   true   for   a   thread   to   continue   execution.   The   thread   pauses   execution,   via  {{Object.wait()}},  {{Thread.sleep()}},   or   some   other   mechanism,   and   is   resumed   later,   presumably   when   the   requirement   is   true   and   when   it   is   notified  \[ [Goetz  2006|AA. References#Goetz 06]\]. 2006a].| Anchor | 
|---|
| |  | conflicting accesses | 
|---|
 |  | conflicting accesses | 
|---|
 | 
| Wiki Markup | 
|---|
*
conflicting   accesses* Two   accesses   to   (reads   of   or   writes   to)   the   same   variable   provided   that   at   least   one   of   the   accesses   is   a   write  \[ [JLS   2005|AA. References#JLS 05]\].| Wiki Markup | 
|---|
*
data   race* Conflicting   accesses   of   the   same   variable   that   are   not   ordered   by   a   happens-before   relationship  \ [[JLS   2005|AA. References#JLS 05]\]. 
deadlock Two or more threads are said to have deadlocked when both block waiting for each other's locks. Neither thread can make any progress.
| Anchor | 
|---|
error tolerance | error tolerance | |  | 
|---|
| |  | denial-of-service | 
|---|
 |  | denial-of-service | 
|---|
 | 
denial-of-service attackAlso DoS attack. An attempt to make a computer resource unavailable to its intended users.| Anchor | 
|---|
| |  | error tolerance | 
|---|
 |  | error tolerance | 
|---|
 | 
error tolerance The ability of a system or component to continue normal operation despite the presence of erroneous inputs [IEEE Std 610.12 1990]| Wiki Markup | 
|---|
*error tolerance* The ability of a system or component to continue normal operation despite the presence of erroneous inputs \[[IEEE Std 610.12 1990|AA. References#IEEE Std 610.12 1990]\].unmigrated-wiki-markup| *exploit* A piece of software or a technique that takes advantage of a security vulnerability to violate an explicit or implicit [security policy|BB. Glossary#security policy] \[[Seacord 2005a|AA. References#Seacord 05]\]. | 
exploit [Seacord 2005]A piece of software or a technique that takes advantage of a security vulnerability to violate an explicit or implicit security policy. 
Pertaining to software that either functions correctly or detects the fault, signals failure, and stops operating.
fail safe [IEEE Std 610.12 1990] Pertaining to a system or component that automatically places itself in a safe operating mode in the event of a failure—for example, a traffic light that reverts to blinking red in all directions when normal operation fails.| Anchor | 
|---|
fail safe | fail safe | | Wiki Markup | 
|---|
*fail safe* Pertaining to a system or component that automatically places itself in a safe operating mode in the event of a failure -- for example, a traffic light that reverts to blinking red in all directions when normal operation fails \[[IEEE Std 610.12 1990|AA. References#IEEE Std 610.12 1990]\].| Wiki Markup | 
|---|
*
fail  soft* Pertaining to a system or component that continues to provide partial operational capability in the event of certain failures -- for example, a traffic light that continues to alternate between red and green if the yellow light fails \[[IEEE Std 610.12 1990|AA. References#IEEE Std 610.12 1990]\].soft [IEEE Std 610.12 1990] Pertaining to a system or component that continues to provide partial operational capability in the event of certain failures—for example, a traffic light that continues to alternate between red and green if the yellow light fails.| Anchor | 
|---|
| |  | fault tolerance | 
|---|
 |  | fault tolerance | 
|---|
 | 
| Wiki Markup | 
|---|
*
fault  tolerance* The ability of a system or component to continue normal operation despite the presence of hardware or software faults \[[IEEE Std 610.12 1990|AA. References#IEEE Std 610.12 1990]\]tolerance [IEEE Std 610.12 1990]The ability of a system or component to continue normal operation despite the presence of hardware or software faults. fields [JLS 2014]
The class variables and instance variables of classes, and constants of interfaces.
| Anchor | 
|---|
| |  | happens-before order | 
|---|
 |  | happens-before order | 
|---|
 | 
| Wiki Markup | 
|---|
*happens-before order* Two actions can be ordered by a 
happens-before order
"Two actions can be ordered by a happens-before   relationship.   If   one   action   happens-before   another,   then   the   first   is   visible   to   and   ordered   before   the   second.   ...   It   should   be   noted   that   the   presence   of   a   happens-before   relationship   between   two   actions   does   not   necessarily   imply   that   they   have   to   take   place   in   that   order   in   an   implementation.   If   the   reordering   produces   results   consistent   with   a   legal   execution,   it   is   not   illegal.   ...   More   specifically,   if   two   actions   share   a   happens-before   relationship,   they   do   not   necessarily   have   to   appear   to   have   happened   in   that   order   to   any   code   with   which   they   do   not   share   a   happens-before   relationship.   Writes   in   one   thread   that   are   in   a   data   race   with   reads   in   another   thread   may,   for   example,   appear   to   occur   out   of   order   to   those   reads \" [[JLS   2005|AA. References#JLS 05]\]. ].| Wiki Markup | 
|---|
*heap   memory* "Memory   that   can   be   shared   between   threads   is   called   shared   memory   or   heap   memory.   All   instance   fields,   static   fields   and   array   elements   are   stored   in   heap   memory.   ... Local   variables   (§14§14.4),   formal   method   parameters   (§8§8.4.1)   or   exception   handler   parameters   are   never   shared   between   threads   and   are   unaffected   by   the   memory   model \" [[JLS   2005|AA. References#JLS 05]\]. | Wiki Markup | 
|---|
*hide* One class field hides a field in a superclass if they have the same identifier. The hidden field is not accessible from the class. Likewise, a class method hides a method in a superclass if they have the same identifier but incompatible signatures. The hidden method is not accessible from the class. See \[[JLS 2005|AA. References#JLS 05]\] [§8.4.8.2|http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.8.2] for the formal definition.  Contrast with [override|BB. Glossary#override]
hide
One class field hides a field in a superclass if they have the same identifier. The hidden field is not accessible from the class. Likewise, a class method hides a method in a superclass if they have the same identifier but incompatible signatures. The hidden method is not accessible from the class. See [JLS 2005] §8.4.8.2 for the formal definition. Contrast with override.
immutableWhen applied to an object, this means that its state cannot be changed after being initialized. 
" An object is immutable if:
- its Its state cannot be modified after construction;
- all All its fields are final; and
- it It is properly constructed (the thisreference does not escape during construction).
| Wiki Markup | 
|---|
It is technically possible to have an immutable object without all fields being final. {{String}} is such a class but this relies on delicate reasoning about benign data races that requires a deep understanding of the Java Memory Model. (For the curious: {{String}} lazily computes the hash code the first time {{hashCode}} is called and caches it in a nonfinal field, but this works only because that field can take on only one nondefault value that is the same every time it is computed because it is derived deterministically from immutable state.) \[[Goetz 2006|AA. References#Goetz 06]\]It is technically possible to have an immutable object without all fields being final. String is such a class but this relies on delicate reasoning about benign data races that requires a deep understanding of the Java Memory Model. (For the curious: String lazily computes the hash code the first time hashCode is called and caches it in a nonfinal field, but this works only because that field can take on only one nondefault value that is the same every time it is computed because it is derived deterministically from immutable state) [Goetz 2006a].
Immutable objects are inherently thread-safe; they may be shared among multiple threads or published without synchronization, though it is usually required to declare the fields containing their references volatile to ensure visibility. An immutable object may contain mutable subobjects, provided the state of the subobjects cannot be modified after construction of the immutable object has concluded.
| Anchor | 
|---|
| |  | initialization safety | 
|---|
 |  | initialization safety | 
|---|
 | 
| Wiki Markup | 
|---|
*
initialization   safety* An   object   is   considered   to   be   completely   initialized   when   its   constructor   finishes.   A   thread   that   can  only  see   a   reference   to   an   object  only after   that   object   has   been   completely   initialized   is   guaranteed   to   see   the   correctly   initialized   values   for   that   object's   final   fields  \ [[JLS   2005|AA. References#JLS 05]\].| Anchor | 
|---|
| |  | instance variable | 
|---|
 |  | instance variable | 
|---|
 | 
| Wiki Markup | 
|---|
*
instance   variable* 
An   instance   variable   is   a   field   declared   within   a   class   declaration   without   using   the   keyword  {{static}}.   If   a   class  {{T}}  has   a   field  {{a}}  that   is   an   instance   variable,   then   a   new   instance   variable  {{a}}  is   created   and   initialized   to   a   default   value   as   part   of   each   newly   created   object   of   class  {{T}}  or   of   any   class   that   is   a   subclass   of  {{T}}.   The   instance   variable   effectively   ceases   to   exist   when   the   object   of   which   it   is   a   field   is   no   longer   referenced,   after   any   necessary   finalization   of   the   object   has   been   completed  \[ [JLS   2005|AA. References#JLS 05]\].| Anchor | 
|---|
| |  | interruption policy | 
|---|
 |  | interruption policy | 
|---|
 | 
| Wiki Markup | 
|---|
*
interruption   policy*  
An   interruption   policy   determines   how   a   thread   interprets   an  interruption request -- what it does interruption request—what it does (if   anything)   when   one   is   detected,   what   units   of   work   are   considered   atomic   with   respect   to   interruption,   and   how   quickly   it   reacts   to   interruption  \[ [Goetz  2006|AA. References#Goetz 06]\]2006a].
invariantA property that is assumed to be true at certain points during program execution 
, but not formally specified. 
They Invariants may be used in 
assert statements 
, or informally specified in comments. Invariants are often used to reason about program correctness.
livenessA property that every operation or method invocation executes to completion without interruptions, even if it goes against safety.
memoizationAn optimization technique used primarily to speed up computer programs by having function calls avoid repeating the calculation of results for previously processed inputs 
[White 2003].
| Anchor | 
|---|
| |  | memory model | 
|---|
 |  | memory model | 
|---|
 | 
| Wiki Markup | 
|---|
*
memory   model* "The   rules   that   determine   how   memory   accesses   are   ordered   and   when   they   are   guaranteed   to   be   visible   are   known   as   the   memory   model   of   the   Java   programming   language"  \ [[JPL   2006|AA. References#JPL 06]\].   "A   memory   model   describes,   given   a   program   and   an   execution   trace   of   that   program,   whether   the   execution   trace   is   a   legal   execution   of   the   program"  \ [[JLS   2005|AA. References#JLS 05]\]. | Anchor | 
|---|
| |  | normalization | 
|---|
 |  | normalization | 
|---|
 | 
| Wiki Markup | 
|---|
*normalization* Lossy conversion of the data to its simplest known (and anticipated) form. "When implementations keep strings in a normalized form, they can be assured that equivalent strings have a unique binary representation" \[[Davis 2008|AA. References#Davis 08]\]
normalizationLossy conversion of the data to its simplest known (and anticipated) form. "When implementations keep strings in a normalized form, they can be assured that equivalent strings have a unique binary representation" [Davis 2008a].| Anchor | 
|---|
| |  | normalization (URI) | 
|---|
 |  | normalization (URI) | 
|---|
 | 
| Wiki Markup | 
|---|
*normalization   (URI)* 
Normalization   is   the   process   of   removing   unnecessary   "."    and   ".."   segments   from   the   path   component   of   a   hierarchical   URI.   Each   "."   segment   is   simply   removed.   A   ".."   segment   is   removed   only   if   it   is   preceded   by   a   non-".."   segment.   Normalization   has   no   effect  upon on opaque   URIs  \ [[API   2006|AA. References#API 06]\].| Wiki Markup | 
|---|
*obscure* One scoped identifier obscures another identifier in a containing scope if the two identifiers are the same, but the obscuring identifier does not [shadow|BB. Glossary#shadow] the obscured identifier. This can happen when the obscuring identifier is a variable while the obscured identifier is a type, for example. See \[[JLS 2005|AA. References#JLS 05]\] [§6.3.2|http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.3.2] for more 
obscureOne scoped identifier obscures another identifier in a containing scope if the two identifiers are the same, but the obscuring identifier does not shadow the obscured identifier. This can happen when the obscuring identifier is a variable while the obscured identifier is a type, for example. See [JLS 2005] §6.3.2 for more information.| Anchor | 
|---|
| |  | obsolete reference | 
|---|
 |  | obsolete reference | 
|---|
 | 
| Wiki Markup | 
|---|
*obsolete reference* An obsolete reference is a reference
that will never be dereferenced again \[[Bloch 2008|AA. References#Bloch 08]\]
obsolete reference
An obsolete reference is a reference that will never be dereferenced again [Bloch 2008].| Wiki Markup | 
|---|
*
open   call* An   alien   method   invoked   outside   of   a   synchronized   region   is   known   as   an  open  call \[Lea00 2.4.1.3\] \[[Bloch 2008|AA. References#Bloch 08]\], \[[Lea 2000|AA. References#Lea 00]\].| Anchor | 
|---|
override | override | | Wiki Markup | 
|---|
| *override* One class method overrides a method in a superclass if they have compatible signatures. The overridden method is still accessible from the class via the {{super}} keyword. See \[[JLS 2005|AA. References#JLS 05]\] [§8.4.8.1|http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.8.1] for the formal definition. Contrast with [hide|BB. Glossary#hide]. | 
call [Bloch 2008], [Lea 2000a].
| Anchor | 
|---|
| |  | out-of-band error indicator | 
|---|
 |  | out-of-band error indicator | 
|---|
 | 
out-of-band error indicator [ISO/IEC TS 17961:2013]A library function return value used to indicate nothing but the error status.| Anchor | 
|---|
| |  | out-of-domain value | 
|---|
 |  | out-of-domain value | 
|---|
 | 
out-of-domain value [ISO/IEC TS 17961:2013]One of a set of values that is not in the domain of a particular operator or function.
overrideOne class method overrides a method in a superclass if they have compatible signatures. The overridden method is still accessible from the class via the super keyword. See [JLS 2005] §8.4.8.1 for the formal definition. Contrast with hide.| Anchor | 
|---|
| |  | partial order | 
|---|
 |  | partial order | 
|---|
 | 
| Wiki Markup | 
|---|
*partial   order*  "An   order   defined   for   some,   but   not   necessarily   all,   pairs   of   items.   For   instance,   the   sets  \ {a,   b\}   and  \ {a,   c,   d\}   are   subsets   of  \ {a,   b,   c,   d\},   but   neither   is   a   subset   of   the   other.   So  is  a   "subset   of"   is   a   partial   order   on   sets \[" [Black   2004|AA. References#Black 04]\]].| Anchor | 
|---|
| |  | program order | 
|---|
 |  | program order | 
|---|
 | 
| Wiki Markup | 
|---|
*
program   order* The   order   that   interthread   actions   are   performed   by   a   thread   according   to   the  intra-thread intrathread semantics   of   the   thread.   "Program   order  \ [can   be   described\]   as   the   order   of   bytecodes   present   in   the   .class   file,   as   they   would   execute   based   on   control   flow   values"   (David   Holmes,  [JMM   Mailing   List|https://mailman.cs.umd.edu/mailman/private/javamemorymodel-discussion/2007-September/000086.html]).| Anchor | 
|---|
| |  | publishing objects | 
|---|
 |  | publishing objects | 
|---|
 | 
| Wiki Markup | 
|---|
*publishing objects* Publishing an object means making it available to code outside of its current scope, such as by storing a reference to it where other code can find it, returning it from a nonprivate method, or passing it to a method in another class \[[Goetz 2006|AA. References#Goetz 06]\
publishing objects
Publishing an object means making it available to code outside of its current scope, such as by storing a reference to it where other code can find it, returning it from a nonprivate method, or passing it to a method in another class [Goetz 2006a].| Anchor | 
|---|
| |  | race condition | 
|---|
 |  | race condition | 
|---|
 | 
| Wiki Markup | 
|---|
*race condition* 
race condition"General   races   cause   nondeterministic   execution   and   are   failures   in   programs   intended   to   be   deterministic"  \ [[Netzer   1992|AA. References#Netzer 92]\].   "A   race   condition   occurs   when   the   correctness   of   a   computation   depends   on   the   relative   timing   or   interleaving   of   multiple   threads   by   the   runtime"  \ [[Goetz 2006|AA. References#Goetz 06]\]Goetz 2006a].| Anchor | 
|---|
| |  | relativization (URI) | 
|---|
 |  | relativization (URI) | 
|---|
 | 
| Wiki Markup | 
|---|
*relativization (URI)* \[Relativization\] is the inverse of resolution. For example, relativizing the URI {{relativization (URI)[Relativization] is the inverse of resolution. For example, relativizing the URI http://java.sun.com/j2se/1.3/docs/guide/index.html}}  against   the   base   URI  {{http://java.sun.com/j2se/1.3}} yields the relative URI {{docs/guide/index.html}} \[[API 2006|AA. References#API 06]\].com/j2se/1.3 yields the relative URI docs/guide/index.html [API 2006].reentrant [ISO/IEC/IEEE 24765:2010]Pertaining to a software module that can be entered as part of one process while also in execution as part of another process and still achieve the desired results.reliability [IEEE Std 610.12 1990]The ability of a system or component to perform its required functions under stated conditions for a specified period of time.| Anchor | 
|---|
| |  | restricted sink | 
|---|
 |  | restricted sink | 
|---|
 | 
restricted sink [ISO/IEC TS 17961:2013]Operands and arguments whose domain is a subset of the domain described by their types.robustness [IEEE Std 610.12 1990]The degree to which a system or component can function correctly in the presence of invalid inputs or stressful environmental conditions.| Anchor | 
|---|
| |  | safe publication | 
|---|
 |  | safe publication | 
|---|
 | 
safe publicationTo publish an object safely, both the reference to the object and the object's state must be made visible to other threads at the same time. A properly constructed object can be safely published by
:- Initializing an object reference from a static initializer.
- Storing a reference to it into a volatile field.
- Storing a reference to it into a final field.
| Wiki Markup | 
|---|
 Storing   a   reference   to   it   into   a   field   that   is   properly   guarded   by   a   (_synchronized_)   lock.
 \
 [[Goetz  20062006a,   Section   3.5   "Safe   Publication"|AA. References#Goetz 06]\]
unmigrated-wiki-markup*safety* Its main goal is to ensure that all objects maintain consistent states in a multi-threaded environment \[[Lea 2000|AA. References#Lea 00]\]
safetyThe main goal of safety is to ensure that all objects maintain consistent states in a multithreaded environment [Lea 2000].| Anchor | 
|---|
| |  | sanitization | 
|---|
 |  | sanitization | 
|---|
 | 
sanitization Sanitization is a term used for validating input and transforming it to a representation that conforms to the input requirements of a complex subsystem. For example, a database may require all invalid characters to be escaped or eliminated prior to their storage. Input sanitization refers to the elimination of unwanted characters from the input by means of removal, replacement, encoding or escaping the characterssanitize [ISO/IEC TS 17961:2013]Assure by testing or replacement that a tainted or other value conforms to the constraints imposed by one or more restricted sinks into which it may flow.NOTE
If the value does not conform, either the path is diverted to avoid using the value or a different, known-conforming value is substituted.
| Anchor | 
|---|
| |  | security flaw | 
|---|
 |  | security flaw | 
|---|
 | 
unmigrated-wiki-markup*security  flaw* A software defect that poses a potential security risk \[[Seacord 2005|AA. References#Seacord 05]\]flaw [ISO/IEC TS 17961:2013]Defect that poses a potential security risk.| Anchor | 
|---|
| |  | security policy | 
|---|
 |  | security policy | 
|---|
 | 
security policy [Internet Society 2000]Set of rules and practices that specify or regulate how a system or organization provides security services to protect sensitive and critical system resources.| Anchor | 
|---|
| |  | sensitive code | 
|---|
 |  | sensitive code | 
|---|
 | 
sensitive code
Any code that performs operations forbidden to untrusted code. Also, any code that accesses sensitive data (
q.v.). For example, code whose correct operation requires enhanced privileges is typically considered to be sensitive.
| Anchor | 
|---|
| |  | sensitive data | 
|---|
 |  | sensitive data | 
|---|
 | 
sensitive dataAny data that must be kept secure. Consequences of this security requirement include 
the following:
- Untrusted code is forbidden to access sensitive data.
- Trusted code is forbidden to leak sensitive data to untrusted code.
...
| Anchor | 
|---|
| |  | sequential consistency | 
|---|
 |  | sequential consistency | 
|---|
 | 
| Wiki Markup | 
|---|
*
sequential   consistency* 
"Sequential   consistency   is   a   very   strong   guarantee   that   is   made   about   visibility   and   ordering   in   an   execution   of   a   program.   Within   a   sequentially   consistent   execution,   there   is   a   total   order   over   all   individual   actions   (such   as   reads   and   writes)   which   is   consistent   with   the   order   of   the   program,   and   each   individual   action   is   atomic   and   is   immediately   visible   to   every   thread.   ...   If   a   program   is   correctly   synchronized,   all   executions   of   the   program   will   appear   to   be   sequentially   consistent   (§17§17.4.3)"  \ [[JLS   2005|AA. References#JLS 05]\].   Sequential   consistency   implies   there   will   be   no   compiler   optimizations   in   the   statements   of   the   action.   Adopting   sequential   consistency   as   the   memory   model   and   disallowing   other   primitives   can   be   overly   restrictive   because , under   this   condition,   the   compiler   is   not   allowed   to   make   optimizations   and   reorder   code  \ [[JLS   2005|AA. References#JLS 05]\].| Wiki Markup | 
|---|
*shadow* One scoped identifier shadows another identifier in a containing scope if the two identifiers are the same and they both reference variables. They may also both reference methods or types. The shadowed identifier is not accessible in the scope of the shadowing identifier. See \[[JLS 2005|AA. References#JLS 05]\] [§6.3.1|http://java.sun.com/docs/books/jls/third_edition/html/names.html#6.3.1] for more information. Contrast with [obscure|BB. Glossary#obscure].
shadowOne scoped identifier shadows another identifier in a containing scope if the two identifiers are the same and they both reference variables. They may also both reference methods or types. The shadowed identifier is not accessible in the scope of the shadowing identifier. See [JLS 2005] §6.3.1 for more information. Contrast with obscure.| Anchor | 
|---|
| |  | synchronization | 
|---|
 |  | synchronization | 
|---|
 | 
| Wiki Markup | 
|---|
*synchronization* The Java programming language provides multiple mechanisms for communicating between threads. The most basic of these methods is _synchronization_, which is implemented using monitors. Each object in Java is associated with a monitor, which a thread can lock or unlock. Only one thread at a time may hold a lock on a monitor. Any other threads attempting to lock that monitor are blocked until they can obtain a lock on that monitor \[[JLS 2005|AA. References#JLS 05]\]
synchronization
The Java programming language provides multiple mechanisms for communicating between threads. The most basic of these methods is synchronization, which is implemented using monitors. Each object in Java is associated with a monitor, which a thread can lock or unlock. Only one thread at a time may hold a lock on a monitor. Any other threads attempting to lock that monitor are blocked until they can obtain a lock on that monitor [JLS 2005].
starvationA condition wherein one or more threads prevent other threads from accessing a shared resource over extended periods of time. For instance, a thread that invokes a synchronized method that performs some time-consuming operation starves other threads.
| Anchor | 
|---|
| |  | tainted data | 
|---|
 |  | tainted data | 
|---|
 | 
unmigrated-wiki-markup*
tainted   data* 
Data   that   either   originate   from   an   untrusted   source   or   result   from   an   operation   whose   inputs   included   tainted   data.   Tainted   data   can   be   sanitized   (also  _untainted_)   through   suitable   data   validation.   Note   that   all   outputs   from   untrusted   code   must   be   considered   to   be   tainted  \ [[Jovanovich   2006|AA. References#Jovanovich 06]\].| Wiki Markup | 
|---|
*
thread-safe* An   object   is   thread-safe   if   it   can   be   shared   by   multiple   threads   without   the   possibility   of   any   data   races.   "A   thread-safe   object   performs   synchronization   internally,   so   multiple   threads   can   freely   access   it   through   its   public   interface   without   further   synchronization"  \ [[Goetz 2006|AA. References#Goetz 06]\Goetz 2006a].   Immutable   classes   are   thread-safe   by   definition.   Mutable   classes   may   also   be   thread-safe   if   they   are   properly   synchronized. unmigrated-wiki-markup*
total   order* 
An   order   defined   for   all   pairs   of   items   of   a   set.   For   instance,   <=   (less   than   or   equal   to)   is   a   total   order   on   integers, ; that   is,   for   any   two   integers,   one   of   them   is   less   than   or   equal   to   the   other  \[ [Black   2006|AA. References#Black 06]\].| Anchor | 
|---|
| |  | trusted code | 
|---|
 |  | trusted code | 
|---|
 | 
trusted code
Code that is loaded by the primordial class loader, irrespective of whether or not it constitutes the Java API. In this text, this meaning is extended to include code that is obtained from a known entity and given permissions that untrusted code lacks. By this definition, untrusted and trusted code can coexist in the namespace of a single class loader (not necessarily the primordial class loader). In such cases, the security policy must make this distinction clear by assigning appropriate privileges to trusted code while denying those privileges to untrusted code.
| Anchor | 
|---|
| |  | untrusted code | 
|---|
 |  | untrusted code | 
|---|
 | 
untrusted code
Code of unknown origin that can potentially cause some harm when executed. Untrusted code may not always be malicious, but this is usually hard to determine automatically. 
Consequently, untrusted code should be run in a sandboxed environmentConsequently, untrusted code should be run in a sandboxed environment.| Anchor | 
|---|
| |  | untrusted data | 
|---|
 |  | untrusted data | 
|---|
 | 
untrusted data [ISO/IEC 11889-1:2009]
Data originating from outside of a trust boundary.
| Wiki Markup | 
|---|
*volatile*
 volatile"A   write   to   a   volatile   field   (§8§8.3.1.4)   happens-before   every   subsequent   read   of   that   field"  \ [[JLS   2005|AA. References#JLS 05]\].   "Operations   on   the   master   copies   of   volatile   variables   on   behalf   of   a   thread   are   performed   by   the   main   memory   in   exactly   the   order   that   the   thread   requested"  \[ [JVMSpec   1999|AA. References#JVMSpec 99]\].   Accesses   to   a   volatile   variable   are  [sequentially  consistent|BB. Glossary#sequential consistency] which also means that the operations are exempt from compiler optimizations. Declaring a variable volatile ensures that all threads see the most consistent, which also means that the operations are exempt from compiler optimizations. Declaring a variable volatile ensures that all threads see the most up-to-date   value   of   the   variable   if   any   thread   modifies   it.   Volatile   guarantees   atomic   reads   and   writes   of   primitive   values;   however,   it   does   not   guarantee   the   atomicity   of   composite   operations   such   as   variable   incrementation   (read-modify-write   sequence).   | Anchor | 
|---|
| |  | vulnerability | 
|---|
 |  | vulnerability | 
|---|
 | 
| Wiki Markup | 
|---|
*vulnerability* A set of conditions that allow an attacker to violate an explicit or implicit security policy \[[Seacord 2005|AA. References#Seacord 05]\
vulnerabilityA set of conditions that allow an attacker to violate an explicit or implicit security policy [Seacord 2005].