This document summarizes new features being added to Java SE 7, including Project Coin which aims to make small improvements to the Java language. Some changes discussed are binary and underscored number literals, string switches, simplified generics using the diamond operator, and try-with-resources for automatic resource management to simplify file copying and closing streams. The goals are to evolve Java cautiously while growing adoption and maintaining a unified language.
A guide to clear java certification. A deck containing study plan for clearing Java certification. If you are looking to hire a tutor after un-successful attempts, then you can check http://urbanpro.com for a Java tutor
A guide to clear java certification. A deck containing study plan for clearing Java certification. If you are looking to hire a tutor after un-successful attempts, then you can check http://urbanpro.com for a Java tutor
I've been using mongodb for 2 years and many times I've faced myself asking "why should I use it for this?" or "when should I really use Mongodb?" and many other times "What did I do wrong?".
Experiences, examples and real use cases many times say things that benchmarks or technical documentation don't, that for, I'll be presenting the When, Why and What of mongodb. For real, that's what really matters.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
I've been using mongodb for 2 years and many times I've faced myself asking "why should I use it for this?" or "when should I really use Mongodb?" and many other times "What did I do wrong?".
Experiences, examples and real use cases many times say things that benchmarks or technical documentation don't, that for, I'll be presenting the When, Why and What of mongodb. For real, that's what really matters.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
5. How Java Evolves and Adapts
Community Development of
Java Technology
Specifications
Thursday, September 8, 2011
6. JCP Reforms
• Developers’ voice in the Executive Committee
• SOUJava
• Goldman Sachs
• London JavaCommunity
• Alex Terrazas
• JCP starting a program of reform
• JSR 348: Towards a new version of the JCP
Thursday, September 8, 2011
7. Evolving the Language
From “Evolving the Java Language” - JavaOne 2005
• Java language principles
– Reading is more important than writing
– Code should be a joy to read
– The language should not hide what is happening
– Code should do what it seems to do
– Simplicity matters
– Every “good” feature adds more “bad” weight
– Sometimes it is best to leave things out
• One language: with the same meaning everywhere
• No dialects
• We will evolve the Java language
• But cautiously, with a long term view
• “first do no harm”
also “Growing a Language” - Guy Steele 1999
“The Feel of Java” - James Gosling 1997
7
Thursday, September 8, 2011
8. So you want to change the language?
8
Thursday, September 8, 2011
9. Java SE 7 Release Contents
• Java Language
• Project Coin (JSR-334)
• Class Libraries
• NIO2 (JSR-203)
• Fork-Join framework, ParallelArray (JSR-166y)
• Java Virtual Machine
• The DaVinci Machine project (JSR-292)
• InvokeDynamic bytecode
• Miscellaneous things
• JSR-336: Java SE 7 Release Contents
9
Thursday, September 8, 2011
10. Section Divider
Small <Insert Picture Here>
Language
Changes
Project Coin
10
Thursday, September 8, 2011
11. coin, n. A piece of small change
coin, v. To create new language
11
Thursday, September 8, 2011
12. Project Coin Constraints
• Small language changes
• Small in specification, implementation, testing
• No new keywords!
• Wary of type system changes
• Coordinate with larger language changes
– Project Lambda
– Modularity
• One language, one javac
12
Thursday, September 8, 2011
13. Better Integer Literal
• Binary literals
int mask = 0b101010101010;
• With underscores for clarity
int mask = 0b1010_1010_1010;
long big = 9_223_783_036_967_937L;
13
Thursday, September 8, 2011
14. String Switch Statement
• Today case label includes integer constants and
enum constants
• Strings are constants too (immutable)
14
Thursday, September 8, 2011
16. Strings in Switch Statements
int monthNameToDays(String s, int year) {
switch(s) {
case "April": case "June":
case "September": case "November":
return 30;
case "January": case "March":
case "May": case "July":
case "August": case "December":
return 31;
case "February”:
...
default:
...
16
Thursday, September 8, 2011
17. Simplifying Generics
• Pre-generics
List strList = new ArrayList();
17
Thursday, September 8, 2011
18. Simplifying Generics
• Pre-generics
List strList = new ArrayList();
• With Generics
List<String> strList = new ArrayList<String>();
18
Thursday, September 8, 2011
19. Simplifying Generics
• Pre-generics
List strList = new ArrayList();
• With Generics
List<String> strList = new ArrayList<String>();
List<Map<String, List<String>> strList =
new ArrayList<Map<String, List<String>>();
19
Thursday, September 8, 2011
20. Diamond Operator
• Pre-generics
List strList = new ArrayList();
• With Generics
List<String> strList = new ArrayList<String>();
List<Map<String, List<String>> strList =
new ArrayList<Map<String, List<String>>();
• With diamond (<>) compiler infers type
List<String> strList = new ArrayList<>();
List<Map<String, List<String>> strList =
new ArrayList<>();
20
Thursday, September 8, 2011
21. Copying a File
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest);
byte[] buf = new byte[8192];
int n;
while (n = in.read(buf)) >= 0)
out.write(buf, 0, n);
21
Thursday, September 8, 2011
22. Copying a File (Better, but wrong)
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest);
try {
byte[] buf = new byte[8192];
int n;
while (n = in.read(buf)) >= 0)
out.write(buf, 0, n);
} finally {
in.close();
out.close();
}
22
Thursday, September 8, 2011
23. Copying a File (Correct, but complex)
InputStream in = new FileInputStream(src);
try {
OutputStream out = new FileOutputStream(dest);
try {
byte[] buf = new byte[8192];
int n;
while (n = in.read(buf)) >= 0)
out.write(buf, 0, n);
} finally {
out.close();
}
} finally {
in.close();
}
23
Thursday, September 8, 2011
24. Copying a File (Correct, but complex)
InputStream in = new FileInputStream(src);
try {
OutputStream out = new FileOutputStream(dest);
try {
byte[] buf = new byte[8192];
int n;
while (n = in.read(buf)) >= 0)
out.write(buf, 0, n);
} finally {
out.close();
}
} finally {
Exception thrown from
in.close(); potentially three places.
} Details of first two could be lost
24
Thursday, September 8, 2011
25. Automatic Resource Management
try (InputStream in = new FileInputStream(src),
OutputStream out = new FileOutputStream(dest))
{
byte[] buf = new byte[8192];
int n;
while (n = in.read(buf)) >= 0)
out.write(buf, 0, n);
}
25
Thursday, September 8, 2011
26. The Details
• Compiler desugars try-with-resources into nested try-
finally blocks with variables to track exception state
• Suppressed exceptions are recorded for posterity
using a new facillity of Throwable
• API support in JDK 7
• New superinterface java.lang.AutoCloseable
• All AutoCloseable and by extension java.io.Closeable
types useable with try-with-resources
• anything with a void close() method is a candidate
• JDBC 4.1 retrefitted as AutoCloseable too
26
Thursday, September 8, 2011
27. More Informative Backtraces
java.io.IOException
at Suppress.write(Suppress.java:19)
at Suppress.main(Suppress.java:8)
Suppressed: java.io.IOException
at Suppress.close(Suppress.java:24)
at Suppress.main(Suppress.java:9)
Suppressed: java.io.IOException
at Suppress.close(Suppress.java:24)
at Suppress.main(Suppress.java:9)
27
Thursday, September 8, 2011
28. Varargs Warnings
class Test {
public static void main(String... args) {
List<List<String>> monthsInTwoLanguages =
Arrays.asList(Arrays.asList("January",
"February"),
Arrays.asList("Gennaio",
"Febbraio" ));
}
}
Test.java:7: warning:
[unchecked] unchecked generic array creation
for varargs parameter of type List<String>[]
Arrays.asList(Arrays.asList("January",
^
1 warning
28
Thursday, September 8, 2011
29. Varargs Warnings Revised
• New mandatory compiler warning at suspect varargs
method declarations
• By applying an annotation at the declaration,
warnings at the declaration and call sites can be
suppressed
• @SuppressWarnings(value = “unchecked”)
• @SafeVarargs
29
Thursday, September 8, 2011
33. New I/O 2 (NIO2) Libraries
JSR 203
• Original Java I/O APIs presented challenges for
developers
• Not designed to be extensible
• Many methods do not throw exceptions as expected
• rename() method works inconsistently
• Developers want greater access to file metadata
• Java NIO2 solves these problems
33
Thursday, September 8, 2011
34. Java NIO2 Features
• Path is a replacement for File
• Biggest impact on developers
• Better directory support
• list() method can stream via iterator
• Entries can be filtered using regular expressions in API
• Symbolic link support
• java.nio.file.Filesystem
• interface to a filesystem (FAT, ZFS, Zip archive, network, etc)
• java.nio.file.attribute package
• Access to file metadata
34
Thursday, September 8, 2011
35. Path Class
• Equivalent of java.io.File in the new API
– Immutable
• Have methods to access and manipulate Path
• Few ways to create a Path
– From Paths and FileSystem
//Make a reference to the path
Path home = Paths.get(“/home/fred”);
//Resolve tmp from /home/fred -> /home/fred/tmp
Path tmpPath = home.resolve(“tmp”);
//Create a relative path from tmp -> ..
Path relativePath = tmpPath.relativize(home)
File file = relativePath.toFile();
35
Thursday, September 8, 2011
36. File Operation – Copy, Move
• File copy is really easy
– With fine grain control
Path src = Paths.get(“/home/fred/readme.txt”);
Path dst = Paths.get(“/home/fred/copy_readme.txt”);
Files.copy(src, dst,
StandardCopyOption.COPY_ATTRIBUTES,
StandardCopyOption.REPLACE_EXISTING);
• File move is supported
– Optional atomic move supported
Path src = Paths.get(“/home/fred/readme.txt”);
Path dst = Paths.get(“/home/fred/readme.1st”);
Files.move(src, dst, StandardCopyOption.ATOMIC_MOVE);
36
Thursday, September 8, 2011
37. Directories
• DirectoryStream iterate over entries
– Scales to large directories
– Uses less resources
– Smooth out response time for remote file systems
– Implements Iterable and Closeable for productivity
• Filtering support
– Build-in support for glob, regex and custom filters
Path srcPath = Paths.get(“/home/fred/src”);
try (DirectoryStream<Path> dir =
srcPath.newDirectoryStream(“*.java”)) {
for (Path file: dir)
System.out.println(file.getName());
}
37
Thursday, September 8, 2011
38. Concurrency APIs
• JSR166y
• Update to JSR166x which was an update to JSR166
• Adds a lightweight task framework
• Also referred to as Fork/Join
• Phaser
• Barrier similar to CyclicBarrier and CountDownLatch
• TransferQueue interface
• Extension to BlockingQueue
• Implemented by LinkedTransferQueue
38
Thursday, September 8, 2011
39. Fork Join Framework
• Goal is to take advantage of multiple processor
• Designed for task that can be broken down into
smaller pieces
– Eg. Fibonacci number fib(10) = fib(9) + fib(8)
• Typical algorithm that uses fork join
if I can manage the task
perform the task
else
fork task into x number of smaller/similar task
join the results
39
Thursday, September 8, 2011
40. Key Classes
• ForkJoinPool
– Executor service for running ForkJoinTask
• ForkJoinTask
– The base class for forkjoin task
• RecursiveAction
– A subclass of ForkJoinTask
– A recursive resultless task
– Implements compute() abstract method to perform
calculation
• RecursiveTask
– Similar to RecursiveAction but returns a result
40
Thursday, September 8, 2011
41. ForkJoin Example – Fibonacci
public class Fibonacci extends RecursiveTask<Integer> {
private final int number;
public Fibonacci(int n) { number = n; }
@Override protected Integer compute() {
switch (number) {
case 0: return (0);
case 1: return (1);
default:
Fibonacci f1 = new Fibonacci(number – 1);
Fibonacci f2 = new Fibonacci(number – 2);
f1.fork(); f2.fork();
return (f1.join() + f2.join());
}
}
}
41
Thursday, September 8, 2011
42. ForkJoin Example – Fibonacci
ForkJoinPool pool = new ForkJoinPool();
Fibonacci r = new Fibonacci(10);
pool.submit(r);
while (!r.isDone()) {
//Do some work
...
}
System.out.println("Result of fib(10) = "
+ r.get());
42
Thursday, September 8, 2011
43. Client Libraries
• Nimbus Look and Feel
• Platform APIs for shaped and translucent windows
• JLayer (formerly from Swing labs)
• Optimised 2D rendering
43
Thursday, September 8, 2011
44. Nimbus Look and Feel
• Better than Metal for cross platform look-and-feel
• Introduced in Java SE 6u10, now part of Swing
• Not the default L&F
44
Thursday, September 8, 2011
45. JLayer component
Easy enrichment for Swing components
45
Thursday, September 8, 2011
46. JLayer component
The universal decorator
• Transparent decorator for a Swing component
• Controls the painting of its subcomponents
• Catches all input and focus events for the whole hierarchy
// wrap your component with JLayer
JLayer<JPanel> layer = new JLayer<JPanel>(panel);
// custom ui provides all extra functionality
layer.setUI(myLayerUI);
// add the layer as usual component
frame.add(layer);
46
Thursday, September 8, 2011
47. The DaVinci Machine Project (JSR-292)
(A multi-language renaissance for the JVM)
Better
47
Thursday, September 8, 2011
48. Languages Like Virtual Machines
• Programming languages need runtime support
• Memory management / Garbage collection
• Concurrency control
• Security
• Reflection
• Debugging integration
• Standard libraries
• Compiler writers have to build these from scratch
• Targeting a VM allows reuse of infrastructure
48
Thursday, September 8, 2011
49. JVM Specification
“The Java virtual machine knows
nothing about the Java
programming language, only of a
particular binary format, the class
file format.”
1.2 The Java Virtual Machine Spec.
49
Thursday, September 8, 2011
50. Languages Running on the JVM
Tea
Zigzag JESS Jickle iScript
Modula-2 Lisp
Nice
CAL JavaScript
Correlate
Simkin Drools Basic JudoScript
Groovy Eiffel
Icon v-language Pascal Luck
Prolog Mini
Tcl PLAN Hojo
Rexx JavaFX Script Scala
Funnel
Tiger Anvil Yassl Oberon
FScript
E Smalltalk
Logo
Tiger JHCR JRuby
Ada G Scheme
Clojure
Processing Dawn Phobos Sather
WebL TermWare
Sleep
LLP Pnuts Bex Script
BeanShell Forth
C# PHP
Yoix SALSA ObjectScript
Jython Piccola
51
50
Thursday, September 8, 2011
51. InvokeDynamic Bytecode
• JVM currently has four ways to invoke method
• Invokevirtual, invokeinterface, invokestatic, invokespecial
• All require full method signature data
• InvokeDynamic will use method handle
• Effectively an indirect pointer to the method
• When dynamic method is first called bootstrap code
determines method and creates handle
• Subsequent calls simply reference defined handle
• Type changes force a re-compute of the method
location and an update to the handle
• Method call changes are invisible to calling code
51
Thursday, September 8, 2011
52. CallSite and MethodHandle
• invokedynamic linked to a CallSite
– CallSite can be linked or unlinked
– CallSite holder of MethodHandle
• MethodHandle is a directly executable reference to
an underlying method, constructor, field
– Can transform arguments and return type
– Transformation – conversion, insertion, deletion, substitution
52
Thursday, September 8, 2011
54. Miscellaneous Things
• Security
• Eliptic curve cryptography
• TLS 1.2
• JAXP 1.4.4
• JAX-WS 2.2
• JAXB 2.2
• ClassLoader architecture changes
• close() for URLClassLoader
• Javadoc support for CSS
54
Thursday, September 8, 2011
55. JDK 7 Platform Support
• Windows x86
• Server 2008, Server 2008 R2, 7 & 8 (when it GAs)
• Windows Vista, XP
• Linux x86
• Oracle Linux 5.5+, 6.x
• Red Hat Enterprise Linux 5.5+, 6.x
• SuSE Linux Enterprise Server 10.x, 11.x
• Ubuntu Linux 10.04 LTS, 11.04
• Solaris x86/SPARC
• Solaris 10.9+, 11.x
• Apple OSX x86
• will be supported post-GA, detailed plan TBD
Note: JDK 7 should run on pretty much any Windows/Linux/Solaris.
These configurations are the ones primarily tested by Oracle, and
for which we provide commercial support.
55
Thursday, September 8, 2011
56. JVM Convergence – Forward looking
Project “HotRockit”
JDK 7 GA – 07/11 JDK 7u2 JDK 7uX JDK 8 GA
• Hotspot 21 • Hotspot 22 • Hotspot 23 • Hotspot24
• Java SE 7 Support • Performance • More performance • Java SE 8 Support
• Rebranding • Enable large heaps • Improved command • All performance
• Improved JMX
with reasonable line servicability features from
latencies (jcmd) JRockit ported
Agent
• Enable large heaps • All servicability
• Command line
servicability tool with consistent features from
(jrcmd) reasonable latencies JRockit ported
• No PermGen • Compiler controls
• Verbose logging
--- Premium --- --- Premium ---
--- Premium ---
• Complete JRockit • JRockit Mission
• Improved JRockit
Flight Recorder Control Memleak
Mission Control Support Tool Support
Console support
• Soft Real Time GC
Thursday, September 8, 2011
57. Java SE 8
Project Jigsaw (JSR-294)
Modularising the Java Platform
Project Lambda (JSR 335)
Closures and lambda expressions
Better support for multi-core processors
More Project Coin
Small Language Changes
57
Thursday, September 8, 2011
58. Conclusions
• Java SE 7
• Incremental changes
• Evolutionary, not revolutionary
• Good solid set of features to make developers life easier
• Java SE 8
• Major new features: Modularisation and Closures
• More smaller features to be defined
• Java continues to grow and adapt to the changing
world of IT
58
Thursday, September 8, 2011
59. The preceding is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any
material, code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.
59
Thursday, September 8, 2011