...
big-endian: "Multibyte data items are always stored in big-endian order, where the high bytes come first" [JVMSpec 2012], 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].
...
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 2011] , §4.12.3, "Kinds of Variables"].
Anchor | ||||
---|---|---|---|---|
|
...
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 2011] , §17.4.1, "Shared Variables"].
Anchor | ||||
---|---|---|---|---|
|
controlling expression: The top-level expression in the conditional expression of an if
, while
, do...while
, or switch
statement.
Anchor | ||||
---|---|---|---|---|
|
data race: "When a program contains two conflicting accesses that are not ordered by a happens-before relationship, it is said to contain a data race." [JLS 2011] , §17.4.5, "Happens-before Order"].
Anchor | ||||
---|---|---|---|---|
|
deadlock: Two or more threads are said to have deadlocked when both block waiting for each others' locks. Neither thread can make any progress.
...
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 2011] , §17.4.5, "Happens-before Order"].
Anchor | ||||
---|---|---|---|---|
|
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, formal method parameters or exception handler parameters are never shared between threads and are unaffected by the memory model" [JLS 2011] , §17.4.1, "Shared Variables"].
Anchor | ||||
---|---|---|---|---|
|
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 2011] See Java Language Specification: Java SE 7 Edition, §8.4.8.2, "Hiding (by Class Methods)" [JLS 2011] for the formal definition. Contrast with BB. Definitions.
...
initialization safety: "An object is considered to be completely initialized when its constructor finishes. A thread that can 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 2011] , §17.5, "final
Field Semantics"].
Anchor | ||||
---|---|---|---|---|
|
...
instance variable: "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 2011] , §4.12.3, "Kinds of Variables"].
Anchor | ||||
---|---|---|---|---|
|
liveness: Every operation or method invocation executes to completion without interruptions, even if it goes against safety.
...
memoization: An optimization technique used primarily to speed up computer programs by having function calls avoid repeating the calculation of results for previously processed inputs White, Tom, Memoization in Java Using Dynamic Proxy Classes, 08/20/2003.inputs [White 2003].
Anchor | |||
---|---|---|---|
Anchor | |||
|
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]. "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 2011] , §17.4, "Memory Model"].
Anchor | ||||
---|---|---|---|---|
|
...
normalization (URI): 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 on opaque URIs [API 2011] , Class URI].
Anchor | ||||
---|---|---|---|---|
|
obscure: One scoped identifier obscures another identifier in a containing scope if the two identifiers are the same, but the obscuring identifier does not BB. Definitions the obscured identifier. This can happen if the obscuring identifier is a variable and the obscured identifier is a type, for example. See [JLS 2011]See Java Language Specification: Java SE 7 Edition, §6.4.2, "Obscuring" [JLS 2011], for more information.
Anchor | ||||
---|---|---|---|---|
|
obsolete reference: "An obsolete reference is simply a reference
that will never be dereferenced again" [Bloch 2008].
...
open call: "An alien method invoked outside of a synchronized region is known as an open call" [Lea00 2Lea 2000, §2.4.1.3]. See also Effective Java, 2nd ed. [Bloch 2008] and [Lea 2000].
Anchor | ||||
---|---|---|---|---|
|
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 2011], section Java Language Specification: Java SE 7 Edition, §8.4.8.1, "Overriding (by Instance Methods)")" [JLS 2011], for the formal definition. Contrast with BB. Definitions.
...
relativization (URI): "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 2011] , Class URI].
Anchor | ||||
---|---|---|---|---|
|
safe publication: Definition TBD [Goetz 2006, Section 3§3.5 "Safe Publication"].
Anchor | ||||
---|---|---|---|---|
|
...
security flaw: A software defect that poses a potential security risk [Seacord 20052013].
Anchor | ||||
---|---|---|---|---|
|
sensitive code: Any code that performs operations that would be 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.
...
sequential consistency: "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, then all executions of the program will appear to be sequentially consistent." [JLS 2011] , §17.4.3, "Programs and Program Order"]. 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 2011] §17.4.3, "Programs and Program Order".
Anchor | ||||
---|---|---|---|---|
|
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 2011] Java Language Specification: Java SE 7 Edition, §6.4.1, "Shadowing" [JLS 2011], for more information. Contrast with BB. Definitions.
...
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 2011] , §17.1, "Synchronization"].
Anchor | ||||
---|---|---|---|---|
|
starvation: A 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 somea time-time consuming operation starves other threads.
...
volatile: "A write to a volatile field happens-before every subsequent read of that field" [JLS 2011] , §17.4.5. "Happens-before Order"]. "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]. Accesses to a volatile
variable are sequentially 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, but it does not guarantee the atomicity of composite operations such as variable incrementation (read-modify-write sequence).
...
vulnerability: "A set of conditions that allows an attacker to violate an explicit or implicit security policy" [Seacord 20052013].