Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applicatio 2015
DOI: 10.1145/2814270.2814313
|View full text |Cite
|
Sign up to set email alerts
|

Use at your own risk: the Java unsafe API in the wild

Abstract: Java is a safe language. Its runtime environment provides strong safety guarantees that any Java application can rely on. Or so we think. We show that the runtime actually does not provide these guarantees-for a large fraction of today's Java code. Unbeknownst to many application developers, the Java runtime includes a "backdoor" that allows expert library and framework developers to circumvent Java's safety guarantees. This backdoor is there by design, and is well known to experts, as it enables them to write… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
20
0

Year Published

2016
2016
2022
2022

Publication Types

Select...
4
4
1

Relationship

0
9

Authors

Journals

citations
Cited by 54 publications
(20 citation statements)
references
References 16 publications
0
20
0
Order By: Relevance
“…The rationale is that clients of these elements were previously warned that they are no longer supported, and, therefore, subjected to changes or even to removal. Finally, APIDIFF warns if a BCC is performed in an experimental or internal API [11], [12]. For this purpose, the tool checks if the qualified name of the changed API element As presented in Table I, APIDIFF does not use the term refactoring to name BCCs.…”
Section: Definitionmentioning
confidence: 99%
See 1 more Smart Citation
“…The rationale is that clients of these elements were previously warned that they are no longer supported, and, therefore, subjected to changes or even to removal. Finally, APIDIFF warns if a BCC is performed in an experimental or internal API [11], [12]. For this purpose, the tool checks if the qualified name of the changed API element As presented in Table I, APIDIFF does not use the term refactoring to name BCCs.…”
Section: Definitionmentioning
confidence: 99%
“…We organized the reasons mentioned by these developers on two major themes: internal APIs and testing branches/new releases. Regarding the first theme, APIDIFF gives a warning about APIs that are likely to be internal; specifically, the ones implemented in packages containing the string internal, as recommended in the related literature [11], [12]. Nonetheless, 21 developers mentioned that the BCCs occurred at internal (or low-level) APIs that do not include internal in their names, as in the following answers:…”
Section: A How Often Do Changes Impact Clients?mentioning
confidence: 99%
“…Data structures are mapped and accessed as C-structs in the native space. In Java, we access the native Cstructs using a helper class which utilizes the Unsafe library [29] as this is the fastest method in both spaces.…”
Section: Low Latency Data Exchange Between Java and Cmentioning
confidence: 99%
“…There are some solutions based on off-heap memory [41,44,46] (i.e., allocating memory for the application outside the GCmanaged heap). While this is an effective approach to allocate and keep data out of the range of the GC (and therefore, reducing object copying), it has several important drawbacks: i) off-heap data needs to be serialized to be saved in off-heap memory, and de-serialized before being used by the application (this obviously has performance overheads); ii) off-heap memory must be explicitly collected by the application developer (which is error prone [11,14] and completely ignores the advantages of running inside Figure 1: Allocation of Objects in Different Generations a memory managed environment); iii) the application must always have objects identifying the data stored in off-heap (these so called header objects are stored in the managed heap therefore stressing the GC).…”
Section: Off-heap Based Solutionsmentioning
confidence: 99%