We currently have code compiled in Java 8 but we are running that on Java 11 VM. Now we are trying to move our code to Java 11 compile time as well. Wondering if there are any benefits to compiled code in Java 8 vs Compiled code in Java 11 performance-wise, since both compilers will produce different class files (bytecode)? How does one differ from the other in terms of efficiency?
Compiled code in java 8 vs Compiled code in java 11
2.2k Views Asked by Sagar At
1
There are 1 best solutions below
Related Questions in JAVA
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
- Redirect inside java interceptor
- Push toolbar content below statusbar
- Animation in Java on top of JPanel
- JPA - How to query with a LIKE operator in combination with an AttributeConverter
- Java Assign a Value to an array cell
Related Questions in JAVA-8
- Why do we need to avoid mutations while coding? What is a mutation?
- Collecting inner List from outer List using Java 8
- How to get the index and max value of an array in one shot?
- Why did Java 8 introduce *Integer.sum(int a, int b)*
- How to stop a reduce operation mid way based on some condition?
- Create a pointcut based on annotation parameters
- How should I be using LambdaMetaFactory in my use case?
- How to sort an IntStream in reverse order
- ArrayOutOfBoundsException on Bean creation while using Java 8 constructs
- Java 8: stop reduction operation from examining all Stream elements
- In Ubuntu java -version gives Error occurred during initialization of VM
- Builder pattern with a Java 8 Stream
- resin project, jdk8 has a high cpu load ,but jdk7 not
- Center JoptionPaneMessageDialog in parent element of the source element that generated the event
- Implementing swing in jdk 1.8 using eclipse
Related Questions in COMPILATION
- gcc static library compilation
- AngularJS directive within ng-if won't run
- How do I compile QScintilla and Eric6 on Linux?
- Troubleshoot slow compilation
- C ignoring incrementation
- Compiling or using RtMidi on Windows 7
- within a project can I compile a module and interactively load the compiled module within ghci?
- C++ / compilation of a program fatal error: QtGui/qwidget.h: No such file or directory
- What do I have to consider when putting all code in the header?
- how do i compile a file with plugin stuff?
- Error when compiling simple LLVM example with Mingw
- Ant debug and ant release failed
- Compilation failure in JNativeHook
- error: C1083: Cannot open include file: 'ui_MainWindow.h': No such file or directory, Qt Creator
- Netbeans not using available memory during compilation
Related Questions in JVM
- JVM is functioning very differently with same flags
- Heap size issue on migrating from Solr 5.0.0 to Solr 5.1.0
- Can't open eclipse with Windows 7 (doesn't see jdk jde)
- Can I import java libraries in HP ALM without Microsoft Java Virtual Machine?
- resin project, jdk8 has a high cpu load ,but jdk7 not
- Using multiple JVM languages in the same project
- Practical case JVM tunning to avoid full GC
- why does buckminster not resolve my passed JVM argument?
- Where to patch back the information gathered during program analysis
- Java 8 , JCE Unlimited Strength Policy and SSL Handshake over TLS
- Does the JVM limit the number of threads an Executor can run?
- With Swift open sourced, what would it take to have it running on the JVM?
- JVM ClassUnloadingWithConcurrentMark flag
- Ruby RJB can't create Java VM error
- Exposing whether an application is undergoing GC via UDP
Related Questions in JAVA-11
- Java 11 : Error:java: invalid source release: 11 - Not sure what to do anymore
- Convert Json string into Hashmap of hashmap in java
- Comprehensive list of all functional interfaces in JDK outside java.function package
- Java 11 on latest Mac OS seems to lock the file system for minutes at a time
- maven javadoc shows annotation twice
- Should an XML catalog be able to resolve modules?
- Mapping an object using a List<UnaryOperator<...>>
- How to write responses of multiple asynchronous get requests to a single file in asynchronous httpclient java 11?
- Graaljs script engine evaluate on java script string condition
- using maven deployit plugin which relies on jaxb with java 11
- Java 11 installation problem for Ubuntu 16.04
- When transforming XML in XSLT processor, how are entities and modules resolved if they don't exist in XML catalog?
- Immutables Criteria Syntax Error In JDK 11 Module
- Is there a change to return a png file like response.png instead of response.bin
- Start an external command line process in Java 11
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
javacis not an optimizing compiler, so in general, don't expect it to produce "faster" bytecode from release to release. Optimization is a job of the JVM.Meanwhile, Java Compiler does support new language features and may support new JVM features. Some of them indeed have performance implications. Most notable examples in JDK 9 - JDK 11 are the following.
JEP 280: Indify String Concatenation (JDK 9).
This JEP changes the way how string concatenation expressions are compiled. Before JDK 9, string
+expression was translated toAlthough JIT recognizes such chains and tries to optimize them in runtime, this optimization is fragile and does not always work as expected. Compiling string concatenation with
invokedynamicgives the JVM more freedom to produce better code. You may find the detailed explanation and benchmarks in the notes to this JEP.JEP 181: Nest-Based Access Control (JDK 11)
This JEP solves the problem of accessing private members of nested classes. Before JDK 11, Java Compiler generated synthetic bridge methods for them (example).
At first glance, this has nothing to do with performance. However, in marginal cases an additional synthetic method may break inlining due to inlining depth limit.
Nest-Based Access Control allows nestmate classes to access private members of each other without synthetic bridges, thus reducing risk of accidential performance degradation.
Update
Previously I included JDK-8175883: Bytecode Generation for Enhanced for Loop in this list, but as @Holger noticed in the comments, this "optimization" didn't actually work.
Conclusion
Changes in Java Compiler are mostly related to new language/JVM features. Bytecode level optimization is not a goal. However, some of these changes may (indirectly) affect the performance, too. Anyway, the possible performance benefits from recompiling the code are usually so small that you won't even notice them in a real application.