the state of java under oracle at jcertif 2011
DESCRIPTION
The State of Java under Oracle at JCertif 2011TRANSCRIPT
Arun GuptaJava Developer Advocate, Oracle
The State of Java
The following 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.
Thank you Africa!
Oracle Strategy
• Deliver a complete, open, integrated stack of
hardware, infrastructure, database, middleware, and
business applications
• Exploit processor, systems, storage, and networking
trends to deliver breakthrough innovations by combining
Oracle software with Sun hardware
• Integrate components of Oracle’s software stack to
provide unique value to customers
Open Source Strategy Comparison
Oracle doesn’t really have an open
source-specific strategy. What we
have is an overall company
strategy: to deliver complete,
open, integrated solutions to our
customers. Stacks of software and
hardware that are built together
and tested together and serviced
together. And open source is part
of that.
What's the business model? I
don't know. But if you don't
have adoption, it won't matter
what business model you
use. Companies that sell
open source are prioritizing
community and adoption
over instant monetization.
- Edward Screven, Chief Corporate Architect - Jonathan Schwartz, CEO
http://www.oracle.com/technetwork/issue-archive/2010/o40interview-086226.htmlhttp://news.cnet.com/8301-13505_3-9757417-16.html
Middleware and Java in Oracle’s Strategy
• Comprehensive foundation for building and running
custom and packaged applications• Extremely well integrated
• Industry-leading reliability and performance
• Unified development and management
• Basis for Oracle Fusion applications
• Built with and for Java technology
Desktop Embedded TV Mobile CardServers
The Spectrum of Java
Java EE
BD-J
JavaFX Java TV MSA
Java CardJava MEJava SE
Java language
Priorities for our Java Platforms
Grow developer base
Grow adoption
Increase competitiveness
Adapt to change
Java Communities
How Java Evolves and Adapts
Community Development of
Java Technology Specifications
JCP Reforms
•Developers’ voice in the Executive Committee–SOUJava
–Goldman Sachs
–London Java Community
–Alex Terrazas
•JCP starting a program of reform–JSR 348: Towards a new version of the JCP
JavaOne
•JavaOne 2011 is coming– October 2-6, San Francisco with dedicated venue
– 400+ sessions by Rock Star speakers
•Regional JavaOnes– Brazil
– Russia
– India
– China
•More coming this/next year
Java Platform, Standard Edition
Photo from http://www.flickr.com/photos/jeffanddayna/2637637797/in/photostream/ under creative commons
Available Now
Java SE 7 Highlights
• JSR 334: Java language enhancements (Project Coin)
• JSR 292: New bytecode to speed dynamic languages
on the JVM
• JSR 166y: New Fork/Join framework for concurrent
programming
• JSR 203: NIO.2
String in Switch – Before JDK 7
@Path("fruits")
public class FruitResource {
@GET
@Produces("application/json")
@Path("{name}")
public String getJson(@PathParam("name")String name) {
if (name.equals("apple") || name.equals("cherry") || name.equals("strawberry"))
return "Red";
else if (name.equals("banana") || name.equals("papaya"))
return "Yellow";
else if (name.equals("kiwi") || name.equals("grapes") || name.equals("guava"))
return "Green";
else if (name.equals("clementine") || name.equals("persimmon"))
return "Orange";
else
return "Unknown";
}
. . .
String in Switch – After JDK 7
@Path("fruits")
public class FruitResource {
@GET
@Produces("application/json")
@Path("{name}")
public String getJson(@PathParam("name")String name) {
switch (name) {
case "apple": case "cherry": case "strawberry":
return "Red";
case "banana": case "papaya":
return "Yellow";
case "kiwi": case "grapes": case "guava":
return "Green";
case "clementine": case "persimmon":
return "Orange";
default:
return "Unknown";
}
}
. . .
Automatic Resource Management – Before JDK 7
@Resource(name=“jdbc/__default”)
DataSource ds;
@javax.annotation.PostConstruct
void startup() {
Connection c = null;
Statement s = null;
try {
c = ds.getConnection();
s = c.createStatement();
// invoke SQL here
} catch (SQLException ex) {
System.err.println("ouch!");
} finally {
try {
if (s != null)
s.close();
if (c != null)
c.close();
} catch (SQLException ex) {
System.err.println("ouch!");;
}
}
}
Automatic Resource Management – After JDK 7
@Resource(name=“jdbc/__default”)
DataSource ds;
@javax.annotation.PostConstruct
void startup() {
try (Connection c = ds.getConnection(); Statement s = c.createStatement()) {
// invoke SQL here
} catch (SQLException ex) {
System.err.println("ouch!");
}
}
Multi-catch – Before JDK 7
out.println("</body>");
out.println("</html>");
} catch (ServletException ex) {
Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
} catch (MessagingException ex) {
Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
} finally {
out.close();
}
Multi-catch – After JDK 7
out.println("</body>");
out.println("</html>");
} catch (ServletException | MessagingException | IOException ex) {
Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
} finally {
out.close();
}
Late 2012
• Project Lambda
– Lambda expressions
– Interface evolution
– Concurrent bulk data operations
• Modularity for Java SE
• Careful additions to the Java language
• Annotations on Java types
Java SE 8 Projects
JDK 8 – Fall/Winter 2012
• Modularization
• Language and VM Support
• Platform Modularization
• Project Lambda
• Lambda Expressions
• Default Methods
• Bulk Data Operations
• Annotations on Java types (JSR 308)
• More Small Language Enhancements
• Project Coin part 2
Features from “Plan B”
• Serialization fixes
• Multicast improvements
• Java APIs for accessing location, compass and other ”environmental” data (partially exists in ME)
• Improved language interop
• Faster startup/warmup
• Dependency injection (JSR 330)
• Include select enhancements from Google Guava
• Small Swing enhancements
• More security/crypto features, improved support for x.509-style certificates etc
• Internationalization: non-Gregorian calendars, more configurable sorting
• Date and Time (JSR 310)
• Process control API
Other Things On Oracle’s Wish List*
* Many of these will undoubtedly NOT make JDK 8.
OpenJDK Momentum
JDK7 Now Available
• Download JDK
• openjdk.java.net
• Open project mailing lists
• Download NetBeans 7.0.1
• netbeans.org
• JDK 7 support
• Download from oracle.com/javase
Java for Client Platforms
100% of Blu-ray Disc players
Millions of SIM cards
Millions of feature phones
Java Client Deployment
75m desktops updated/month
Java Pioneered Rich Client ApplicationsBut developers had to learn multiple technologies
JavaFX Simplifies Application DevelopmentDevelopers focus on capabilities instead of technologies
JavaFX is the evolution of the Java rich client platform, designed
to provide a lightweight, hardware accelerated UI platform that
meets tomorrow’s needs.
UI Toolkit
Java 2DDirectX
3DOpenGL
JavaFX APIs & Scene Graph
Hardware acceleration &
Software fallback
Developers program to
high-level APIs
High-level Architecture
Java Virtual Machine on Supported Platforms
Prism Graphics Engine Media
EngineWeb
Engine
JavaFX Roadmap
Mac OS, Linux
CY2012CY 2011
Jan May Oct
Early
Access✔
Public
Beta✔
GAWindows
Java ME 2011 Focus
• ME.next to modernize platform
• Integration of web technologies
• New device APIs
– Near-field communication, Sensors, Accelerometers, etc
• Scalable, high performance runtime solutions
Oracle Java ME Products
• Commercial implementations
– Oracle Java Wireless Client
– Oracle Java Embedded Client
• Developer products
– Java ME SDK
– Java Card SDK
– LWUIT
– NetBeans IDE Mobility Pack
Java Platform, Enterprise Edition
The Java EE Journey
1998 2000 2002 2004 2006 2008 2010
J2EE 1.2
Servlet, EJB,
JSP, JMS,
Mail, …
J2EE 1.3
JCA,
JAAS,
XML, CMP,
…
J2EE 1.4
WebSvcs,
JMX,
Deployment,
…
Java EE 5
JPA, EJB3,
Annotations,
Faces, …
Java EE 6
More POJOs, Web
Profile, EJBLite,
Restful WS,
Injection, …
Web Services
Simplicity
Cloud
Lines of Code* Lines of XML*Java Classes*
* Based on a Sample POJO/JPA/REST Based Application Built for JavaOne
Java EE 6 : Simplified Development and Deployment
• Standardized POJO programming model
• Simplified deployment descriptors
• Simplified APIs
• Dependency injection
• RESTful web services
• Web Profile
Available
Announced
Java EE 5: Widely Available Java EE 6: Fast Uptake
Open Source and Commercial Implementations
GlassFish Areas of Focus
• First to market for new platform versions
• Continued emphasis on developer-friendly characteristics & popular OSS
• Production quality deployment features
– Clustering in current 3.1 release
– Web & Full Profile Java EE6 applications
• Shared components with WebLogic Server
– Ref Implementation APIs: JPA, JAX-RS, JSF, JAX-WS, JSTL, JAXP, JAXB, CDI
– Web server plug-ins
• Certified Interoperability with WebLogic
– Web Services, OAM, RMI
Oracle WebLogic Server
Production Java Application Deployment
Oracle GlassFish Server
Production Java Application Deployment
• Best commercial application server for transactional Java EE applications and in near future, Java EE 6 Full Profile
• Platform of choice for standardization
• Focus on lowest operational cost and mission critical applications
• Best integration with Oracle Database, Fusion Middleware & Fusion Applications
GlassFish and WebLogic Together
• Best open source application server with support from Oracle
• Open source platform of choice for OSGi or EE6 Web/Full Profile
• Focus on latest Java EE standards and community OSS innovation
• Certified interoperability and integration with Fusion Middleware
Beyond Java EE 6: Moving into the Cloud
•Develop
•Deploy
•Manage
Java EE Today – Roles and Responsibilities
Deployer/AdministratorDeveloper
Container Provider
Java EE
Cloud Requires Data Center and Tenant Roles
Tenant 1 Tenant 2 Tenant n
PaaS Administrator
Application AdministratorDeveloper
Container/Service
Provider
Application
Deployer
Java EE Cloud
Clouds Parting: Java EE 7
• Cloud computing is the major theme
– Java EE as a managed environment
– Application packaging reflecting new roles
– Application isolation and versioning
– In-place application upgrade
• Also significant Web Tier updates
– Web sockets, HTML5/JSF, standard JSON, NIO.2
• JSRs approved by the JCP !
– JSR 342: Java Platform Enterprise Edition 7
• More candidate component JSRs
– JSR 236 : Concurrency Utilities for Java EE
– JSR 107: JCache
– JSR 347: DataGrids for Java EE
Java Tooling
Java Developer Tools
NetBeans 2011
• Over 1,000,000 active users
• NetBeans 7.0.1
– JDK 7 and Java editor support
– Glassfish 3.1 support, WLS and Oracle database support improvements
– Maven 3 and HTML 5 editing support
• Two planned releases for 2011
• More information
– http://download.netbeans.org/7.0/
– http://netbeans.org/community/releases/roadmap.html
A presentation isn’t an obligation,
It’s a privilege.by Seth Godin
Thank you!
Arun Gupta, [email protected] Developer Advocate, Oracle
blogs.oracle.com/arungupta, @arungupta
The State of Java