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 answers
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in JAVA-8
- Java control panel glitching or becomes yellowish
- Uneven Load Distribution in Kubernetes Pods with Multithreaded Execution using fork join pool
- test result: Error. Program `sh' timed out (timeout set to 480000ms, elapsed time including timeout handling was 480002ms)
- java.net.ConnectException: Connection timed out: no further information Java to SOAP
- Java Stream, Need to update list of list objects
- Setting up different Java class fields value by a single value on some counter value
- feign client Spring boot
- `TYPE_USE` vs `TYPE` vs `TYPE_PARAMETER` annotations
- Error faced in trying to install Java 8 on Raspberry Pi 4B
- Grouping by multiple fields and counting using in Java 8
- How to customize mention notifications in liferay 7.3.5
- Without _JAVA_OPTIONS and JAVA_TOOL_OPTIONS, whether LeanFT will work or not?
- How to build a CriteriaQuery from SQL query
- From a string I am manually setting the date and time in calendar, for the other days it is working fine but for 28 and 29 Feb it is setting wrong val
- Sort strings containing numbers, chars and ponctuations in ”human readable order”
Related Questions in COMPILATION
- I am trying to run java application in Eclipse, When I try to do Run > Run as > Java Application it starts to show little processing but nothing happe
- Unable to run get .exe file from assembly NASM
- Javascript to Java
- How to compile only the changed files in Verilator?
- Why does the .exe file become locked after compiling?
- Installing the C compiler for LC3
- compile syzkaller fuzzer failed without any error or warning
- Solved: Create standalone executable for MacOS with OpenCV and libmagic
- How to work around the "collect2: error: ld returned 1 exit status" error when running simple fortran files with the gfortran command?
- how to add a compiler type supported for sccache?
- Vulkan ‘VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR’ was not declared in this scope
- Rust newbie compile error (for (key: String, value: String) in | ^ expected one of `)`, `,`, `@`, or `|`)
- latest version of redshift with crazy compile times
- Problem compiling out-dated Typescript code
- What is appropriate substitution for configurations.compile in newer gradle e.g. version 8.7?
Related Questions in JVM
- How to check what objects are created and where?
- why does Java’s JIT compilation happen within user threads?
- The way Elasticsearch deals with control heap memory when indexing documents
- Within a Clojure project using deps.edn, where is the package name and version tracked?
- spark - How is it even possible to get an OOM?
- files in /tmp/hsperfdata_<user>/ were deleted
- Does an Stackoverflow occur in the JVM if the Activation Record is too small but there is still space left in the general stack?
- android art genertate verification errors,how to
- Understanding Invokedynamic Instruction in Java Bytecode and Its Impact on the Operand Stack
- A compatibility issue between jaydebeapi and jpype
- Java native access violation is not triggering the windows jit debugger
- java flight recorder(jfr) consumes 100% cpu when its supposed to have only 1-2% overhead
- Java reflection returning base type for Scala classes
- What is the exactly time that JNI release the LocalReference automatically?
- jvm exits for unknown reason
Related Questions in JAVA-11
- About installing openjdk on Fedora workstation
- Eclipse-Maven Forcefully Overwrites Java Version Set Every Update Project
- Issues with the JRE when attempting to open an AEM instance by using JDK 11.0.19 on Ubuntu
- After upgrading to JDK 11 my SOAP response is different
- Problems setting up a new quarkus project on Mac
- In intellij while creating new spring project nit able to see java version below 17
- Lombok AnnotationProcessor failing with Bazel build
- Running test throws NoSuchMethodError
- OracleDataSource cannot implement createConnectionBuilder() in javax.sql.Datasource
- What is the best approach to access concrete sub class specific methods using java?
- Why does LazyInitializationException get thrown on non linked entities?
- Is there a way to make keep-alive setting specific to one instance of java.net.http.HttpClient
- Could not initialize class org.apache.pulsar.jetty.tls.JettySslContextFactory
- RHEL9, OpenJDK 11, FIPS - issues with PBES2 ciphers
- Trouble with setting up Java modules in Apache NetBeans 20 Flatpak Installation, on Linux Mint 21.3 Virginia
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?
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)
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.