4. Most important features
Modularity
Incubator
Jshell
Jlink
G1
HTTP 2
Flow API
http://jdk.java.net/9/release-notes
5. Modularity
Planned for java 7
Makes internal JDK api’s inaccessible
“Biggest” change since existance of JAVA
6. Why?
No need to run full JDK only modules you need
Encapsulate most internal APIs
Increase maintainability can’t use internal-not exposed public methods
9. Incubator
Non final APIs
Finalized or removed in future release
No “lifecycle” strategy
No @deprecated
Warning at run time
10. Jlink
Tool to assemble and optimize modules and their dependencies into a
custom run-time image.
Reduces run time & footprint performance
Unused code is know at link time (not yet implemented)
Plugin optimization and expansion after release
use JLINK modules obligated
19. What is HTTP/2
Same as HTTP 1.1
Request/response based
All http calls work
Different then HTTP 1.1
Binary protocol
http 2 is TLS only (browser)
Multiplex over single connection
Server push capability
27. Java 9 review
Good
Platform more mature
Faster releases
Bad
No long term support
more, More, MORE
not-platform specific community
JAVA still OOP?
Unnecessary methods
28. Java 10 ~ Project Valhalla
Incubator module like HTTP2
Value types
Generic specialization
Reified generics
Improved volatile support
Exports: while this allow other modules to read everything in the package, all subpackage remain sealed.
Exports to, is to share with specific modules but not with the rest
Requires: we have a dependencie on another module (MODULE, not package)
If we want to make it available to other modules by requiring our module: require transitive
Provides, exponse an interface, but hide the implementation
Uses used to indicate the service interface that this module is using; a type name, i.e., complete class/interface name, has to specified after this keyword
Opens: is used to indicate the packages that are accessible only at runtime
They have to use the add-modules commandline options to request that an incubator module be resolved.
Java always had dynamic linking. You can decrease the size of deployment with custom run-time image.
defines link time as an optional phase between the phases of compile time (the javac command) and run-time (the java run-time launcher). Link time requires a linking tool that will assemble and optimize a set of modules and their transitive dependencies to create a run-time image or executable.
/import shows all imports
/vars show all variables
/methods
Concurrent multi threaded GC
Offer more predictable pause times
Is stop the world scenario still applicable
The garbage in every region is tracked an the one with the most gabrage is cleared first
More more more
Client, jdbc, jpa
Factory methods -> static, less constructors
Java is getting overbloded with features, and it’s kind of ugly. But now matter how tangled, nasty and less OOP java gets. I iwll never switch to C#.