Where can I get Java 8 language specification? - java

Specification for Java 7 is available on the Oracle site, but I can't find Java 8 specification anywhere, although downloads of beta versions of Java 8 are available on the internet.
Do you have an idea: is it already written and where can it be downloaded?
If the specification isn't available, maybe another document which can act as (or come close to) the specification?

Now that Java 8 is officially released, the Java Language and JVM specifications can be found on Oracle's website.
Update: thanks to #MadChuckle, link to final release.
According to the project's page, a public review will start in October 2013. In the meantime, you can follow the progress on the various mailing lists provided on that page or have a look at the early draft.
At this stage, the early draft mostly refers to individual sub-projects, so if you want to look at the changes brought by the lambdas for example, you would need to find that sub-project's documents which should indicate the impact on the JLS (not sure if that old draft is the latest - probably not).

May be you can find specifications from here:
http://jcp.org/en/jsr/detail?id=337
Also there are several new features of java 8 as i found from here:
http://openjdk.java.net/projects/jdk8/features

You can find it from here
This also will help you

Current proposed final drafts: http://cr.openjdk.java.net/~mr/se/8/java-se-8-pfd-spec/java-se-8-annex-3.html

I just found this link for the Java Language Specification 8 PDF version.
If you really want to get more, here is the JVM specification for Java 8 PDF version.

Related

What is the current status of JavaHelp Java API?

While reviewing old Java project code, which relied on JavaHelp Java API to provide help functionality, it was unclear what the current status of this API is.
The Java Help API spec is defined as part of JSR-97.
The JavaHelp Wiki page seems to imply it was donated / opened sources to github as part of the Java EE JavaHelp project. However, this project has been archived.
There was licensing concern (i.e., it was GPLv2 with exception, relicenses to CDDL partly with some still being GPLv2 with exceptions) .
Most of the Java EE source has transitioned to the Eclipse / Jakarta EE project. But it's unclear if the JavaHelp functionality was picked up for further development under this umbrella.
There is some legacy JavaHelp documentation but this provides details on usage and points to communities and email addresses which are no longer applicable.
Similar stackoverflow question was asked previously which had some response but may be a bit dated.
Assume "Java Help" may no longer be of use or OBE, preferring instead to use some form of "web based" help content but not sure if this is 100% the case and the official transition expectations.
What is the status of Java Help given transitions and upgrades presently?
Is there still any value in the "Java Help" API?
What is the alternative to this?

Jigsaw hot reload [duplicate]

I am looking for better HotSwapping in the JavaVM. Being able to only apply method body changes is okay but quite limiting.
The options available is JRebel and a discontinued project called Dynamic Code Evolution Virtual Machine (DCEVM).
There is a JEP 159 out there that was written by the core developper of DCEVM. A blog post from 2011 mentioned that the developers of DCEVM now work for Oracle to integrate this into the JDK.
Do we have this kind of support for JDK 8 beta already or was it postponed to JDK 9?
I need hot swapping for adding and removing and renaming private methods mostly. This would help alot. Is there a product allowing me to do so (beside JRebel which PR-campaigns got me upset).
The last supported version of DCEVM is for 1.6u24 and it only provides 32-bit linux binaries. Since I use 1.7 and 64bit Linux this is both a show stopper for me.
There is also another project available on github called Fakereplace. Can this be easily used for my purpose or should I not investigate into this?
There is a fork of DCEVM maintained in the repository on Github. It was recently updated for Java 8. The binaries are available through the GitHub releases or on the downloads page.
For simple things, like adding/removing methods, it should be pretty reliable (verified by automated tests in 16 different configurations). However, it still could eventually crash JVM, so it is by no means should be used in production.
JEPs coming in JDK 8 and JDK 9 are listed in this page. JEP-159 is not among them. From jep index you can see that JEP-159 is not yet targeted to any JDK release, not even jdk 10.
JEP-159 status is currently "Submitted". The process is described as follows:
A successful JEP passes through the following states:
Draft — In circulation by the author for initial review and consensus-building
Posted — Entered into the JEP Archive by the author for wider review
Submitted — Declared by the author to be ready for evaluation
Candidate — Accepted for inclusion in the Roadmap by the OpenJDK Lead
Funded — Judged by a Group or Area Lead to be fully funded
Completed — Finished and delivered
So it's not yet accepted for any roadmap.

What are the official resources for the Java EE APIs spec?

I know a few official sources like the java Java EE 6 tutorial.
But I was wondering, which one are the official sources for properly learning the spec of every API and any other resource related to the Java EE environment? Which resources ppl use to keep track of future versions without being actively participating of any container or spec development?
I hope this question is specific enough by suggesting only official links.
EDIT:
About https://java.net/projects/javaee-spec/pages/Home. It has a lot of links for several document versions and optional content. I wanted just one single resource for each API, a complete version. Let's take for example the annotated ECMAScript 5 spec (http://es5.github.io/).
Assuming the links are permanent it would be very nice to point out the complete documents for the APIs from Java EE 6.
Java EE 6 APIs are available at:
http://docs.oracle.com/javaee/6/api/
These can be downloaded from:
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eedocs-419425.html#java_ee_6u1_docs-JPR
https://java.net/projects/javaee-spec/pages/Home
But not really sure why you couldn't google that.

Are the early versions of the Java Language Specification and VM specification available online?

Oracle has the latest versions of the java specs at http://docs.oracle.com/javase/specs/ but I was unable to find the older versions. Are these archived anywhere?
If you are still interested - I just had the same problem and found the old specs using the waybackmachine , for instance, the JLS 1st edition is here:
http://web.archive.org/web/20041208124545/http://java.sun.com/docs/books/jls/first_edition/html/index.html
Downloading the PDF versions failed, but I can display the online HTML versions.
Yes, take a look in the Oracle Java Archive. You should be able to find everything you need there.

Old projects compatible with Java 7

My old projects use Java 6 (1.6), and I don't know when I update (Java 7), they can run fine ?
There is an official list of known incompatibilities between java 6 and java 7 from Oracle (including descriptions of both binary and source-level incompatibilities in public APIs).
Also you can look at the independent analysis of API changes in the Java API Tracker project: http://abi-laboratory.pro/java/tracker/timeline/jre/
The report is generated by the japi-compliance-checker tool.
They should do, yes. Java has a reasonably strong history of backward compatibility. However, if these are in any way important projects you should still perform a thorough test pass before deploying anywhere production-like.
There shouldn't be any compatibility differences as the JVM is basically the same. However it is early days so there may be subtle differences which cause a problem which people are not yet aware of.
e.g. Eclipse looks at the Supplier in the java.exe on Windows and sets the command line arguments differently for different suppliers. It has a problem with Java 6 update 22 because Oracle wanted to change it from "Sun" to "Oracle". I believe this has been changed so it is "Oracle" in Java 7 (but still "Sun" for Java 6)
My point being, that if you write generic Java code, you shouldn't have a problem. However, if you are doing something a bit unusual, you are likely to need to re-test your application.
As was already stated backward compatibility is a very important aspect in new Java releases, so in general there should be no problems in switching to a newer Java version. In this case, however, Java 7 seems to have a few bugs in the new hotspot compiler optimizations. The Apache Software Foundation has issued a warning that their products Lucene and Solr are affected by these bugs.
http://lucene.apache.org/#28+July+2011+-+WARNING%3A+Index+corruption+and+crashes+in+Apache+Lucene+Core+%2F+Apache+Solr+with+Java+7
The affected loop optimizations can be switched off by starting java with -XX:-UseLoopPredicate.
AFAIS here, there's no Java 6 features which get deprecated in Java 7 so yes, your project should run fine.

Categories