www.denizoguz.com-For an in company JDK 7 orientation I have prepared a presentation which summaries new features of JDK 7. I would like to make it public for everyone who needs it.
www.denizoguz.com-For an in company JDK 7 orientation I have prepared a presentation which summaries new features of JDK 7. I would like to make it public for everyone who needs it.
This introduction to Clojure was given to the Utah Java Users Group Aug. 15. It's main focus was on Clojure's time model and how the design of Clojure separates (decomplects) many concepts which are all implemented onto of Objects in Java, and other OO languages. This is the abstract for the original talk:
Tony Hoare famously said "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." Clojure is a functional Lisp that targets, among other platforms, the JVM and strives to enable the former approach to building software.
In its pursuit of simplicity Clojure encourages the use of pure functions, sequence abstractions which allow for lazy and parallel processing of data, persistent (immutable) data structures, and a novel way of dealing with state as a succession of values. While these concepts may sound intimidating for those unfamiliar with functional programming, they are actually less complicated than many programming constructs that programmers use everyday.
This talk will cover these concepts and the motivation behind them. You will learn the basics of Clojure programming and will be given a taste of what developing an application in Clojure is like.
Spring Data Requery is alternatives of Spring Data JPA
Requery is lightweight ORM for DBMS (MySQL, PostgreSQL, H2, SQLite, Oracle, SQL Server)
Spring Data Requery provide Query By Native Query, Query By Example and Query By Property like Spring Data JPA
Spring Data Requery is better performance than JPA
Kotlin advanced - language reference for android developersBartosz Kosarzycki
StxNext Lightning Talks - Mar 11, 2016
Kotlin Advanced - language reference for Android developers
This presentation contains the second talk on Kotlin language we had at STXNext. We try go deeper into language specifics and look at the positive impact new syntax can have on boilerplate removal and readability improvement.
Kotlin really shines in Android development when one looks at “Enum translation”, “Extension functions”, “SAM conversions”, “Infix notation”, “Closures” and “Fluent interfaces” applied to lists. The talk, however, compares language-specifics of Java & Kotlin in terms of “Type Variance”, “Generics” and “IDE tools” as well.
We present real-world example based on Stx-Insider project written in Kotlin which incorporates Dagger 2, Kotterknife, Retrofit2 and is composed of 5+ Activities.
Full agenda
Live templates
Enum translation
Calling extension functions from Kotlin/Java
Constructors with backing fields
Warnings
F-bound polymorphism
Variance (Covariance/Contravariance)
Variance comparison in Kotlin/Java/Scala
Annotation processing - KAPT
SAM conversions
Type equality
Lambda vs Closure
Reified generics
Fluent interfaces
Infix notation
Static extension methods in Kotlin
Generic types
Sealed classes
Dokka - documentation in Kotlin
J2K converter
Real-world example
Reflection
Presentation is accompanied with an example project (StxInsider):
https://github.com/kosiara/stx-insider
StxNext Lightning Talks - Feb 12, 2016
Kotlin - one of the popular programming languages built on top of Java that runs on JVM. Thanks to JetBrains support and excellent IDE integration, it’s an ideal choice when it comes to Android development. 100% Java compatibility, interoperability and no runtime overhead is just the beginning of a long list of strengths. Kotlin is supposed to be a subset of SCALA, on one hand covering major advantages for developers and on the other - keeping short compile times.
This presentation is a Developer Starter - a set of hand-picked information allowing a person with no knowledge of Kotlin to start writing basic Android activities and set up an Android-kotlin project. It starts with language background, reasons for its creation and advantages. Then presents basic use cases, syntax, structures and patterns. Later on Kotlin is presented in Android context. Simple project structure, imports and Kotlin usage with Android SDK is explained. In the end cost of Kotlin usage is presented and the language is compared to SCALA and SWIFT.
The Scala programming language has been gaining momentum recently as an alternative (and some might say successor) to Java on the JVM. This talk will start with an introduction to basic Scala syntax and concepts, then delve into some of Scala's more interesting and unique features. At the end we'll show a brief example of how Scala is used by the Lift web framework to simplify dynamic web apps.
I used these slides for a Scala workshop that I gave. They are based on these: http://www.scala-lang.org/node/4454. Thanks to Alf Kristian Støyle and Fredrik Vraalsen for sharing!
Building High Perf Web Apps - IE8 FirestarterMithun T. Dhar
Video recordings of this session can be found here:
1. http://channel9.msdn.com/tags/IE%208%20Firestarter - (Developer)
2. http://edge.technet.com/Tags/IE+8+Firestarter/ - (IT Pro's)
If you need to download this file, or need more infomation contact Mithun Dhar via http://blogs.msdn.com/mithund
Alternatives of JPA
Requery provide simple Object Mapping & Generate SQL to execute without reflection and session, so fast than JPA, simple and easy to learn.
Short (45 min) version of my 'Pragmatic Real-World Scala' talk. Discussing patterns and idioms discovered during 1.5 years of building a production system for finance; portfolio management and simulation.
This introduction to Clojure was given to the Utah Java Users Group Aug. 15. It's main focus was on Clojure's time model and how the design of Clojure separates (decomplects) many concepts which are all implemented onto of Objects in Java, and other OO languages. This is the abstract for the original talk:
Tony Hoare famously said "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." Clojure is a functional Lisp that targets, among other platforms, the JVM and strives to enable the former approach to building software.
In its pursuit of simplicity Clojure encourages the use of pure functions, sequence abstractions which allow for lazy and parallel processing of data, persistent (immutable) data structures, and a novel way of dealing with state as a succession of values. While these concepts may sound intimidating for those unfamiliar with functional programming, they are actually less complicated than many programming constructs that programmers use everyday.
This talk will cover these concepts and the motivation behind them. You will learn the basics of Clojure programming and will be given a taste of what developing an application in Clojure is like.
Spring Data Requery is alternatives of Spring Data JPA
Requery is lightweight ORM for DBMS (MySQL, PostgreSQL, H2, SQLite, Oracle, SQL Server)
Spring Data Requery provide Query By Native Query, Query By Example and Query By Property like Spring Data JPA
Spring Data Requery is better performance than JPA
Kotlin advanced - language reference for android developersBartosz Kosarzycki
StxNext Lightning Talks - Mar 11, 2016
Kotlin Advanced - language reference for Android developers
This presentation contains the second talk on Kotlin language we had at STXNext. We try go deeper into language specifics and look at the positive impact new syntax can have on boilerplate removal and readability improvement.
Kotlin really shines in Android development when one looks at “Enum translation”, “Extension functions”, “SAM conversions”, “Infix notation”, “Closures” and “Fluent interfaces” applied to lists. The talk, however, compares language-specifics of Java & Kotlin in terms of “Type Variance”, “Generics” and “IDE tools” as well.
We present real-world example based on Stx-Insider project written in Kotlin which incorporates Dagger 2, Kotterknife, Retrofit2 and is composed of 5+ Activities.
Full agenda
Live templates
Enum translation
Calling extension functions from Kotlin/Java
Constructors with backing fields
Warnings
F-bound polymorphism
Variance (Covariance/Contravariance)
Variance comparison in Kotlin/Java/Scala
Annotation processing - KAPT
SAM conversions
Type equality
Lambda vs Closure
Reified generics
Fluent interfaces
Infix notation
Static extension methods in Kotlin
Generic types
Sealed classes
Dokka - documentation in Kotlin
J2K converter
Real-world example
Reflection
Presentation is accompanied with an example project (StxInsider):
https://github.com/kosiara/stx-insider
StxNext Lightning Talks - Feb 12, 2016
Kotlin - one of the popular programming languages built on top of Java that runs on JVM. Thanks to JetBrains support and excellent IDE integration, it’s an ideal choice when it comes to Android development. 100% Java compatibility, interoperability and no runtime overhead is just the beginning of a long list of strengths. Kotlin is supposed to be a subset of SCALA, on one hand covering major advantages for developers and on the other - keeping short compile times.
This presentation is a Developer Starter - a set of hand-picked information allowing a person with no knowledge of Kotlin to start writing basic Android activities and set up an Android-kotlin project. It starts with language background, reasons for its creation and advantages. Then presents basic use cases, syntax, structures and patterns. Later on Kotlin is presented in Android context. Simple project structure, imports and Kotlin usage with Android SDK is explained. In the end cost of Kotlin usage is presented and the language is compared to SCALA and SWIFT.
The Scala programming language has been gaining momentum recently as an alternative (and some might say successor) to Java on the JVM. This talk will start with an introduction to basic Scala syntax and concepts, then delve into some of Scala's more interesting and unique features. At the end we'll show a brief example of how Scala is used by the Lift web framework to simplify dynamic web apps.
I used these slides for a Scala workshop that I gave. They are based on these: http://www.scala-lang.org/node/4454. Thanks to Alf Kristian Støyle and Fredrik Vraalsen for sharing!
Building High Perf Web Apps - IE8 FirestarterMithun T. Dhar
Video recordings of this session can be found here:
1. http://channel9.msdn.com/tags/IE%208%20Firestarter - (Developer)
2. http://edge.technet.com/Tags/IE+8+Firestarter/ - (IT Pro's)
If you need to download this file, or need more infomation contact Mithun Dhar via http://blogs.msdn.com/mithund
Alternatives of JPA
Requery provide simple Object Mapping & Generate SQL to execute without reflection and session, so fast than JPA, simple and easy to learn.
Short (45 min) version of my 'Pragmatic Real-World Scala' talk. Discussing patterns and idioms discovered during 1.5 years of building a production system for finance; portfolio management and simulation.
Finally Java SE 7 is GA and you can start using it. This talk will cover the most important new features of the language and the virtual machine. It will also cover some features that did not make it in to the SE 7 release. Finally we will discuss current state of Java as an ecosystem and my analysis and hopes for the future.
Presented at BJUG, 6/12/2012 by Roger Brinkley
This talk is on 55 new features in Java 7 you (probably) didn't hear about in an ignite format of one per minute. No stopping, no going back....Questions, sure but only if time remains (otherwise save for later).
The next release of the Java Standard Edition is scheduled for the beginning of 2010. In this session we'll review the latest feature list of what's in and what's out of the next version of the JDK.
An update on the latest news around JavaFX including the 1.2 release and the general availability of JavaFX Mobile for Windows Mobile devices.
Clojure is a new dialect of LISP that runs on the Java Virtual Machine (JVM). As a functional language, it offers great benefits in terms of programmer productivity; as a language that runs on the JVM, it also offers the opportunity to reuse existing Java libraries. Simon’s interest is in using Clojure to build desktop applications with the Java Swing GUI library. In this presentation Simon discusses how the power of Clojure can be applied to Swing, and whether it hits the sweet spot.
Java is moving faster and faster. A lot of features are not as known as they should be.
Let’s review together the old ones you missed.
Then show you the ones you never had time to look at in 9, 10, 11, 12 and 13.
And go crazy to check how it’s implemented under the hood (yes, there will be bytecode).
Using Stratego/XT for generation of software connectors.Michal Malohlava
The talk presents a master thesis describing generation of software connectors code in accordance with a high-level connector description and a domain specific language.
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.
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.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
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.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
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.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
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…
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Terence Barr - jdk7+8 - 24mai2011
1. <Insert Picture Here>
The Future of the Java Platform:
Java SE 7 & Java SE 8
Terrence Barr
Senior Technologist, Mobile & Embedded Technologies
2. 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.
2
2
3. Agenda
Small
(Language) Project Coin (JSR 334)
Changes
Project Coin
Small Language Changes
The DaVinci Machine
Multiple Languages on the JVM
invokedynamic (JSR 292)
Library changes
Miscellaneous Updates
JSR 337:
Java SE 8 Release Contents
3
3
4. Evolving the Language
From “Evolving the Java Language” - JavaOne 2005
• Java language principles
– Reading is more important than writing
– 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”
• Beware: Changes have many downstream implications (spec, tests,
implementation(s), tools, compatibility, future, ...)
4
4
5. Java Standard Edition (Java SE) vs.
Java Development Kit (JDK)
• Java SE • Java Development Kit
• Definition of the software • Oracle's implementation of
platform Java SE
• Specification documents • Additional features not in
• Implementation the spec
• Test suite (TCK) • Tools and documentation
• Implemented by several • Deployment and
groups management capabilities
• Produced in the JCP • Performance features
• Produced in the OpenJDK
project
5
5
8. 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
8
8
9. 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;
9
9
10. String Switch Statement
• Today case label includes integer constants and
enum constants
• Strings are constants too (immutable)
10
10
12. Strings in Switch
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:
...
12
12
15. 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>>();
15
15
16. 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<>();
16
16
17. Simplifying Resource Use
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);
17
17
18. Simplifying Resource Use
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();
}
18
18
19. Simplifying Resource Use
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();
}
19
19
20. 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);
}
20
20
26. JVM Architecture
• Stack based
• Push operand on to the stack
• Instructions operates by popping data off the stack
• Pushes result back on the stack
• Data types
• Eight primitive types, objects and arrays
• Object model – single inheritance with interfaces
• Method resolution
• Receiver and method name
• Statically typed for parameters and return types
• Dynamic linking + static type checking
• Verified at runtime
26
26
27. 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.
27
27
28. Languages Running on the JVM
Tea
Zigzag JESS Jickle iScript
Modula-2 Lisp
Correlate Nice
CAL
JudoScript
JavaScript
Simkin Drools Basic
Icon Groovy Eiffel
v-language Pascal Luck
Prolog Mini
Tcl PLAN Hojo
Rexx Jython Scala
Funnel
Tiger Anvil Yassl Oberon
FScript
E Smalltalk
Logo
Tiger JHCR JRuby
Ada G Scheme
Clojure
Phobos
Processing WebL Dawn TermWare
Sather
Sleep
LLP Pnuts Bex Script
BeanShell Forth PHP
C#
Yoix SALSA ObjectScript
Piccola
28
28
28
29. Method Calls
● Calling a method is cheap
(VMs can even inline!)
● Selecting the right target
method can be expensive
● Static languages do most of their method selection at
compile time
● Single-dispatch on receiver type is left for runtime
● Dynamic languages do almost none at compile time
● But it would be nice to not have to re-do method selection
for every single invocation
● Each Language has its own
ideas about linkage
29
29
30. 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
30
30
32. 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
32
32
33. 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
• Two security models (POSIX, ACL based on NFSv4)
• java.nio.file.Filesystem
• interface to a filesystem (FAT, ZFS, Zip archive, network, etc)
• java.nio.file.attribute package
• Access to file metadata
33
33
34. Concurrency APIs
• JSR166y
• Update to JSR166x which was an update to JSR166
• Adds a lightweight task framework
• Also referred to as Fork/Join
• Uses ParallelArray
• Greatly simplifies use of many cores/processors for tasks that
can easily be separated
34
34
35. Client Libraries
• Nimbus Look and Feel
• Platform APIs for shaped and translucent windows
• JLayer (formerly from Swing labs)
• Optimized 2D rendering
35
35
38. 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);
38
38
39. Miscellaneous Updates
• Security
• Eliptic curve cryptography
• TLS 1.2
• JAXP 1.4.4 (Java API for XML processing)
• JAX-WS 2.2 (Java API for XML Web Services)
• JAXB 2.2 (Java Architecture for XML Binding)
• ClassLoader architecture changes
• close() for URLClassLoader
• Javadoc support for CSS
39
39
40. Platform Support
• Windows (x86)
• Linux (x86)
• Redhat
• Ubuntu
• Solaris (x86)
• New: Apple OSX (x86)
40
40
42. Java SE 8
Project Jigsaw
Modularising the Java Platform
Project Lambda (JSR 335)
Closures and more
Better support for multi-core processors
More Project Coin
Small Language Changes
42
42
43. The Modular Java Platform
• Enables escape from “JAR Hell”
– Eliminates class path
– Package modules for automatic download & install
– Generate native packages – deb, rpm, ips, etc
• Enables significant performance improvements
– Incremental download → fast classloading
– Optimise module content during installation
• Platform scalability – down to small devices
– Well-specified SE subsets can fit into small devices
43
43
44. module-info.java
Entry point Module name
Version
module com.foo @ 1.0.0 {
class com.foo.app.Main
requires org.bar.lib @ 2.1-alpha;
requires edu.baz.util @ 5.2_11;
provides com.foo.app.lib @ 1.0.0;
}
Dependency
Virtual module
44
44
45. Project Lambda
Closures and more
openjdk.java.net/projects/lambda
● Lambda expressions
● SAM conversion with target typing
● Method references
● Library enhancements for internal iteration
● Default methods for interface evolution
45
45
46. Hypothetical Internal Iteration
double highestScore = students
.filter(new Predicate<Student>() {
public boolean isTrue(Student s) {
return s.gradYear == 2010;
}})
.map(new Extractor<Student,Double>() {
public Double extract(Student s) {
return s.score;
}})
.max();
• Not inherently serial
– students traversal not determined by developer
– Looks like a functional language
• Anonymous inner class!
46
46
47. Introducing Lambda Expressions
double highestScore = students
.filter(#{ Student s -> s.gradYear == 2010 })
.map(#{ Student s -> s.score })
.max();
• Lambda expressions introduced with #
– Signal to the JVM to defer execution of the code
– Body may be an expression
• Lambda expression are not syntactic sugar for
anonymous inner class
– Implemented with MethodHandle from JSR-292
47
47
48. Roadmaps Are Approved!
• JSRs approved by JCP
– JSR 334: Small enhancements to the Java language
– JSR 335: Lambda expressions for the Java language
– JSR 336: Java SE 7 Release Contents
– JSR 337: Java SE 8 Release Contents
• OpenJDK Releases in 2011 & 2012
– Committed Features List for 2011:
• openjdk.java.net/projects/jdk7/features
48
48
49. 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 Evolution Continues
• Grow and adapt to the changing world of IT
• Oracle and its partners are committed to a vibrant and
evolving Java ecosystem
49
49