SlideShare a Scribd company logo
1 of 94
Download to read offline
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Java: History and Outlook
Eberhard Wolff
Principal Consultant & Regional Director
SpringSource
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2
Disclaimer
•  These are my personal opinions.
•  We will do a lot history, little outlook.
•  You will learn a lot about high level
architecture in Java by its history.
•  So in the beginning….
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3
Before Java
•  C++ predominant
•  Easy adoption from C
•  Better but less successful alternatives:
•  Eiffel: Statically typed language with
advanced type system
•  Smalltalk: Clean dynamically typed object
oriented language with a VM
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
“The best way to predict the
future is to invent it.”
Alan Kay, Smalltalk Co-Developer
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5
The Beginning…
•  Java was originally created for small
consumer devices (and later set top boxes
etc.)
•  Was called Oak
•  Simple/ simplistic / good enough
language
•  Weaker than Eiffel (type system)
•  …and probably less powerful than Smalltalk
•  Hardware independent
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6
Why was Java successful?
•  Easy language with clear migration path
from C/C++
•  Project shifted focus
•  Applets & the Rise of the Internet
•  SUN as an alternative to Microsoft
•  I meant to say: standards
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7
What remains?
Focus on small devices
•  Mobile, embedded
•  Especially: phones
•  Jini tried this idea again
•  And lately: SUN Spots
•  For even smaller devices
•  i.e just a few chips
•  What can you do with that?
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8
What mains?
Set Top boxes
•  Blu-Ray is the DVD successor
•  Blu Ray disc can be enhanced using Java
•  Currently supported on Sony's Playstation 3
•  Finally Java is on Set Top boxes…
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9
What remains?
Standards
•  Standards are still used as a tool for
innovation in Java
•  Standard and innovation is otherwise
considered a contradiction
•  …but this is how it started
•  Community still looks at standards
•  …and does not always judge technologies
purely by its value
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10
What remains?
Simple Language
•  JDK 1.5 / Java 5 introduced some work
arounds
•  Original Java: Primitive data types (int,
long, float, double) are no objects
•  …but there are object wrappers
•  ...to handle everything uniform
•  Workaround: Autoboxing (i.e. a primitive
data type becomes an object if need to)
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11
Fun with Autoboxing
public static void main(String[] args) {	
List list = new ArrayList();	
Set set = new LinkedHashSet();	
	
for (int x = 0; x < 10; x++) {	
list.add(x);	
set.add(x);	
}	
	
for (int x = 1; x < 6; x++) {	
list.remove(x-1);	
set.remove(x);	
}	
	
System.out.println(list);	
System.out.println(set);	
}	
[1, 3, 5, 7, 9]	
[0, 6, 7, 8, 9]	
	
Java Puzzlers by
Joshua Bloch, Neal Gafter
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12
What remains?
Simple Language
•  No parametric polymorphism (type
parameter / templates)
•  JDK 1.5 Workaround: Changed compiler
but same byte code
•  So just type checking
•  Problem: Limitations for reflection at
runtime
•  Otherwise a good approach and extension!
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13
What remains?
Simple Language
•  Several other enhancements in JDK 1.5
(methods with variable number of
arguments)
•  Workarounds for initial design decisions
•  Java is not simplistic any more
•  Is it still simple?
•  Design goal: Bytecode should remain stable
(.NET decided differently)
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14
What remains?
Simple Language
•  Checked Exceptions
•  Default: Exceptions have to be caught or
declared to be thrown
•  …except for RuntimeExceptions	
•  Seemed OK: It forces you to think about
error conditions
•  But: Java is the only popular language with
this concept
•  What do you do with a checked Exception?
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15
Checked Exceptions:
Output the error somewhere
•  Probably hard to find – not in the log file
•  Error makes the application just continue
try {
...
} catch (JMSException jmsex) {
jmsex.printStackTrace();
}
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16
Checked Exceptions:
Ignore the error
•  Error makes the application just ignore &
continue
•  …and can never be detected
try {
...
} catch (JMSException jmsex) {
}
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17
Checked Exceptions:
Wrap the exception
•  Lots of pointless code (wrapping)
•  Every method will throw MyException
•  Same effect as a RuntimeException: Every
method can throw it
•  …but you do a lot of wrapping and
throws...
try {
...
} catch (JMSException jmsex) {
throw new MyException(jmsex);
}
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18
Take away
•  Checked exceptions are (almost) unique to
Java
•  …and should only be used if really needed
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19
First applications: Applets
•  Vision: From an HTML/HTTP based Web to
networked servers with rich clients
•  Distributed Objects Everywhere!
•  But:
–  Slow startup and bad performance
–  Incompatible JDKs
–  Often HTML is enough
–  Lots of animation players etc.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20
Applets: No success
•  The vision was right, but…
•  …even online Office applications use HTML
+ AJAX nowadays…
•  It gets not more GUI focused
•  Much better JavaScript support in browsers
•  Java would have been an easier / more
sound solution in many cases
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21
Example: Black
Hole Applet
http://gregegan.customer.netspace.net.au/
PLANCK/Tour/TourApplet.html
•  It is hard to even find an
Applet nowadays…
•  Niche: Graphics with
calculation on the client
•  But: The idea is not dead
yet…
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22
What remains?
Applets
•  JavaFX tries to resurrect this idea
•  Small JVM + easy development for rich
GUIs
•  But: Fierce competition
–  Adobe Flash – better adoption than Windows
–  Microsoft Silverlight
•  And: Rather slow development
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23
Server
•  So the client side Java did not work out.
•  What now?
•  Let's try the server!
•  Evolution from shared
database to shared logic
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Server
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25
Before Java
•  CORBA/C++ was predominant and very
complicated
–  No garbage collection
–  Manual thread and instance handling
–  Lots of technology, not too much focus on
business logic
–  Many standards for services, some very hard to
implement and use
–  Death by committee
•  So an alternative was needed
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26
J2EE:
Java 2 Enterprise Edition
•  Web focus
–  Servlets/JSPs are even older
•  But also distributed 2PC
transactions, Message
Orientied Middleware (JMS)
•  Technical solution
•  Other approaches also defined
core Business Objects and not
just technology
•  Anyone remember IBM San
Francisco?
1999
J2EE 1.2 =
EJB 1.1+
JSP 1.1+
Servlets 2.2+
JDBC 2.0+
JNDI 1.2+
JMS 1.0.2+
JTA 1.0.1+
JTS 0.95+
JavaMail 1.1+
JAF 1.0
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27
J2EE vs. C++/CORBA
•  Garbage Collection
•  Automatic thread / instance pooling (EJB)
•  Components define
–  Thread pooling
–  Instance handling
–  Default decisions as opposed to roll-your-own
on CORBA
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28
J2EE
•  Tremendous success
•  SAP, IBM, SUN, Oracle, BEA
•  Original vendors (Orion, WebLogic, …)
were bought
•  Microsoft had to create .NET
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29
But…
•  This is before Hotspot, JIT, optimized
Garbage Collection etc.
•  Bad performance
•  Unstable middleware etc.
•  In retrospect the success is surprising
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30
Why did J2EE succeed?
User
•  Thinking in the Java-Community: "J2EE is a
standard by experts, is has to be suited for
enterprise problems."
•  …and Java is much simpler than what we
use at the moment
•  Open, standards based
•  …and then the middleware company
followed
•  The next big thing after CORBA
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31
Back to the J2EE disaster
  "Up to when I left [a large consultancy]
in 2002, not one of our J2EE projects
had succeeded."
anonymous
  Translate that to the € / $ lost
  (Of course you can blame it on the
customers and the process)
  Why did it fail?
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32
Reasons for Failure:
Distribution
•  To access the same logic from different
front ends it has to be distributed
Web
Server
Java
Client
Mobile
Client
Business Logic
(EJB Server)
Database
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33
The disaster: Distribution
•  "You have to be able scale the business
logic independently from the web to handle
high load."
•  So you must have a web server and an
separate EJB server
•  Note that the logic is just used from the
web server, so no different front ends
•  All EJBs (1.0/1.1) are remotely accessible
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34
Distribution
Database
Web
Server
Web
Server
Web
Server
EJB Server EJB ServerEJB Server
"I turn your software scalability problem in a hardware scalability
problem."
anonymous J2EE consultant
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35
The disaster: Distribution
•  Complete and dangerous nonsense
•  (almost always)
•  A distributed call from the web server to
the EJB server is orders of magnitude
slower than a local call
•  The marshalling and demarshalling might
use more performance than the logic itself
•  "Don't distribute your objects!"
Martin Fowler
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36
The disaster: Productivity
•  An Entity Bean (EJB 1.0-2.1) consists of:
–  Three Java classes / interfaces
–  A deployment descriptor (or part of it)
–  …which is so hard to write that most generate it
using XDoclet
•  Also hard to understand
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37
How to write an EJB…
EJB Standard Interfaces
Generated by Application Server
java.rmi.
Remote
javax.ejb.
EJBLocalObject
javax.ejb.
EJBLocalHome
Remote HomeRemote Interface Local HomeLocal Interface
Implementation
Remote Interfaces
Implementation
Remote Homes
Implementation
Local Interfaces
Implementation
Local Homes
Implementation
Developed by EJB developer
Deployment
Descriptor
by EJB developer
Web Service
Endpoint Interface
Implementation
Web Service
Endpoint Interface
javax.ejb.
EJBHome
javax.ejb.
EJBObject
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38
The disaster: Productivity
•  Usually also a DTO (Data Transfer Object)
is needed
–  to transfer the data to the client / web tier
–  …and of course the data has to be copied into it
–  …so you need also a Stateless Session Bean
(three Java classes/ interfaces + Deployment
Descriptor)
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 39
Productivity
Server
Client
Session Beans
Entity Beans
Value
Objects
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40
The disaster: Productivity
•  All EJBs cannot really be tested without a
container
•  So people started to wrap POJOs (Plain Old
Java Objects) into EJBs
•  Even more code
•  Not object oriented any more
•  Workaround: Generators
•  This hurt MDA
•  …was often perceived as an EJB work
around
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41
The disaster: Persistence
•  Persistent objects
•  Can be remotely accessed
•  Synchronize state with database on each call
•  So with a naïve implementation every get/set
is a remote call (and a SQL query)
•  Now imagine you want to edit some data…
•  Reading n objects uses n+1 SQL queries
•  1 Entity Bean = 3 classes (each technology
dependent) + XML configuration
•  Total usability and performance disaster
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42
But it has to be good for
something…
•  So you would need coarse grained
persistent object
•  With concurrent access by multiple users
•  Why don't we have that in our applications?
•  The standard cannot be wrong, right?
•  This concept is still around
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43
What remains?
J2EE
•  J2EE's success is not based on excellent
engineering
•  J2EE has had very deep trouble and was still a
success
•  It is unlikely that Java Enterprise will go away
•  …as it survived this when it was much weaker.
•  People still think that a technology has to work
because it is a standard
•  …often they don't even question it.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 44
What remains?
J2EE
•  J2EE has been extended and renamed
•  But some concepts are still around
–  EJB very much resembles how CORBA servers
are created and "optimizes" for bad garbage
collection
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 45
What remains?
J2EE
•  Examples:
–  instance pooling obsolete because of thread safe
Singletons and Hotspot VMs
–  two phase commit often unnecessary and slow
–  Still no good security concept: How do you
express that a customer can only see his
accounts?
–  EJB Security is largely unchanged and can't
handle a lot of common issues (instance based
security, Access Control Lists, integration with
common security technologies…)
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 46
Fundamental problems
J2EE
•  Concept is based on small cluster and
client/server
•  What about cloud / virtualization / grid?
•  Still not solved
•  J2EE is invasive i.e. your code depends on
the technology
•  Hard to test, develop and port
•  Object-oriented programming becomes
hard: The decline of OO
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 47
Early J2EE: Issues
•  Performance and productivity problems
•  Decline of OO
•  But: The predominant platform in
Enterprise
•  So: What now?
•  Fix the issues!
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 48
Summary
•  Small Devices
•  Standards
•  Simple Language
•  Applets
•  Server / J2EE Issues
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 49
To come…
•  Persistence
•  Open Source
•  Web
•  Client
•  Outlook
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
J2EE issues: Persistence
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 51
Persistence
•  The need for fast persistence solutions is
obvious for all enterprise applications
•  Work around: Use JDBC
•  Complex and error prone
•  With Entity Beans even harder
and a performance disaster
Database
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 52
It could have been avoided…
•  TopLink was around before that (even for
Smalltalk)
•  NeXT did the Enterprise Object Framework
before that
•  Problem persists: Standardization
committees do not look at prior art
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 53
Persistence: Really solve the
problem!
•  O/R mappers were already well known (as
mentioned)
•  …but not used in the Java community
•  Choosing the wrong persistence technology
will lead to many problems
–  Complex code
–  Bad performance
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 54
Persistence: Solving the
Problem
•  So: The usual approach: Create a standard
•  JDO: Java Data Objects
•  Technically sound
•  Lots of implementations
•  Some JDO vendors based their business on
JDO
•  But not adopted by any big vendor
•  …and did not become part of J2EE
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 55
Persistence
•  People chose Hibernate as an Open Source
product instead
•  …and other projects like iBATIS and OJB
were created
•  Open Source victory over two standards:
JDO and Entity Beans!
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 56
The stories continues…
•  JSR 220 (EJB 3) updated the Entity Bean
model
•  JPA – Java Persistence API
•  However:
–  New model was also usable outside a Java EE
server
–  Technically good, but why is it standardized as
part of EJB then?
–  Why are there two standards? JDO and JPA?
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 57
Persistence War
•  JPA won
•  Backing by large vendors
(Hibernate, Oracle, …)
•  Basically no JDO implementations
around any more
•  So the persistence problem is
solved
•  (sort of)
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 58
What remains?
Persistence Wars
•  Just a few years back JDBC was the (only)
persistence technology
•  Now O/R Mapper are the default
•  But: They are complex pieces of software
•  Caching, lazy loading, complex schema mappings
…
•  …and therefore a trade off
•  …but often a better one
•  Alternatives: Direct SQL with iBATIS, JDBC
•  BTW: On .NET the default is ADO.NET not an O/R
mapper
•  Make your choice!
•  And: Open Source is a viable alternative.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Open Source
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 60
The rise of Open Source
•  Struts: First Web Framework in 2000
•  (In retrospect it had a huge potential)
•  (for optimization that is)
•  …but much better than no framework at all
•  Especially for the Java-in-JSP problems
•  No JCP standard for web frameworks
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 61
Open Source
•  Struts offers no solution to the general
productivity problem
•  Hibernate solves at least persistence issues
•  Spring appeared
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 62
What Spring offers
•  Dependency Injection to structure
applications
•  AOP to add transactions, security ...
•  Simplified APIs for JDBC, JMS …
•  Foundation for Spring Web Services, Spring
Web Flow ...
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 63
Why Spring was successful
•  Solved the productivity challenges: Much simpler
model
•  Very flexible: Support for EJB, JMS, JDBC,
Hibernate, JNDI, …
•  So you can use it in almost any context
•  …and you can use just the parts you need
•  Code technology independent: Applications are
more portable
•  Promotes best practices and makes them easy:
Testing, local access to objects…
•  The rerise of OO
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 64
Spring's impact
•  Helped to solve the productivity problem of
Java EE
•  Made parts of J2EE (especially EJB)
obsolete
•  A lot of projects used Tomcat + Spring
instead of J2EE
•  No EJB, so no need for a full blown app
server
•  Transaction management still a point for
app servers
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 65
Open Source: Tomcat
•  Started as Servlet reference
implementation
•  Became an Apache project
•  Very fast and efficient Servlet container
•  Today: Infrastructure for most Java
projects
•  Another example of Open Source
•  Let's talk about Web for a while
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Web
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 67
The start for Web
•  Servlets: A standardized way to handle
HTTP with Java
•  Mostly like CGI scripts
•  …but in process
•  Lots of Java code that outputs HTML
•  Can we do better?
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 68
JSP
•  Java Server Pages
•  Coincidence: ASP by Microsoft is called
similar
•  HTML + embedded Java
•  + special tags
•  + your own tags
•  Easier than Servlets: No need to output
HTML
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 69
What remains:
JSP
•  Still predominant
•  Embedding Java in JSPs is considered a
Worst Practice™ nowadays
–  No separation between logic and
implementation
•  …but JSP are compiled into Servlets / Java
to enable exactly this
•  JSPs cannot easily be tested (Servlet /
Server dependencies)
•  You should consider other template engines
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 70
Next step: Struts
•  Web MVC framework
–  Model: The data
–  View: Renders data
–  Controller: Logic
•  Clear separation and much better
maintainability
•  Good fit for request-response based
processing
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 71
Struts: The ugly
•  Not very flexible
•  Superclasses instead of Interfaces
•  Dependencies on the ActionServlet	
•  Evolutionary dead end
–  No new versions for a long while
–  Struts 2 is completely incompatible
–  Spring MVC is a worthy successor and much
more flexible
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 72
A quick look at other
approaches…
•  ASP.NET had a completely different concept:
•  Components (buttons, text fields etc.) used to
set up web pages
•  Components send events
•  Developer can handle events
•  Much like traditional GUI development
•  Web Objects (NeXT/Apple) has a similar
approach (and was the first attempt in this
field)
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 73
Co evolution applied
•  JSF uses this approach
•  …and is a standard
•  Note: MVC or component-based is a trade
off, no superiority
•  Rich GUIs or request processing?
•  JavaScript allowed?
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 74
And…
•  Microsoft is working on MVC frameworks
(ASP.NET MVC)
•  So while Java travels from MVC to
component based
•  … .NET goes from component based to MVC
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 75
Web: What remains
•  There are a lot of competing Open Source
web frameworks
•  This drives innovation
•  …and fragmentation
•  This competition sets Java apart from .NET
•  ...and makes it valuable
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 76
New issues…
•  Several pages are part of a business
process
•  Data should be shared during the process
•  Can not be put in the HTTP session:
Otherwise just one process can be
executed in parallel
•  Process should be explicitly handled
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 77
Conversations
•  Allow to model processes
•  Data can be stored with a process scope
•  Also benefits for O/R mappers: Caches /
Unit of work can be scoped in the
conversation
•  For example Spring Web Flow
•  But enough about Web…
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Client
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 79
Client
•  Remember: The origin (Applets)
•  With a predominant client platform
portability (Windows) is often not so
important here
•  …so I believe it is not the most important
area for Java
•  But: One language on client and server
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 80
Client in the beginning
•  Basic infrastructure: AWT
–  Abstract Windowing Toolkit
–  Every GUI element is shadowed by a native GUI
element
–  Better performance, better integration in the
platform
–  First version was done quickly
•  Portability issues for application and AWT
itself
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 81
Swing
•  Idea: Do every in Java
•  Much easier portability
•  Less integration with the underlying
platform
•  Became a viable solution after Java
performance issues were solved
•  Much preferred over AWT nowadays
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 82
Eclipse RCP
•  Eclipse created SWT framework
•  Architecture comparable to AWT
•  Ironic: IBM originally objected AWT
because they had the most platforms to
support
•  Eclipse also has a Plug In system
–  later OSGi
–  Now also on the server
•  This created RCP
•  Widely used
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 83
RIA
•  Rich Internet Applications
•  Provide a non-HTML based rich GUI
•  Silverlight, Flex / Flash, JavaFX
•  I believe this will not be won by JavaFX
•  …but it will make thin clients interesting for
a lot more applications
•  …and the server is the strong point for Java
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.
Outlook
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 85
Java will stay
•  A lot of long running buy ins from vendors…
–  IBM, SAP, SUN, Oracle / BEA,
SpringSource 
•  ...and customers
–  "We are using Java / will be using it for 10+
years."
–  i.e. for ever
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 86
Java will stay
•  I think success of Java is unparalleled in
the history
–  Seemingly comparable previous success:
COBOL, C++
–  So much buy in
–  Binary compatibility
–  Standards (Java EE, Servlets…)
•  …so comparisons are hard
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 87
Open Source will become
more important
•  Better capabilities to innovate
•  Low risk: Commercial support, can be used
freely
•  Vivid Open Source Java community
•  Everything is Open Source now, even Java
itself.
•  …so even the platform can be changed.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 88
Java EE will become less
important
•  Often already replaced by Tomcat + Spring
•  In some areas (Investement Banking) Java
EE was never really used
•  Alternative approaches for cloud, grid etc.
are needed and exist
•  Java EE 6 defines profiles
–  A: Web Server
–  B: Web Server + JTA + Component model
–  C: Full blown
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 89
Middleware will become
modular
•  One-size-fits-all is officially ended by Java
EE 6
•  Very diverse requirements
–  Web: Just Servlets + some framework
–  SOA: JMS + management
–  SOA: JMS + JDBC + transaction
–  Batch
•  Steps beyond Java EE profiles are needed
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 90
OSGi will become interesting
on the server as well
•  Basic infrastructure for many embedded
systems
•  …and Eclipse
•  Strong modularity
•  …with coarse grained components
•  Better architecture
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 91
OSGi will become interesting
on the server as well
•  Modular middleware can be customized
depending on usage context
•  Java EE 6 is also modularbut more is needed
•  Individual updates for bundles
•  So for a fix in the customer module just this
module has to be replaced
•  Less testing, less complex build process, …
•  Heavy interest in the Enterprise
•  Come to Adrian Colyer's SpringSource dm
Server talk!
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 92
New languages will be
interesting
•  Java (the language) is not evolving fast
enough
•  …and was not such a good language from
the start (only better)
•  …and only work-arounds were added
•  …and dynamically typed languages are
becoming fashionable now
•  You should use Java only with AOP
(Spring / AspectJ)
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 93
Some examples for new
languages
•  Java influence:
–  Scala: Better statically typed language
–  Groovy: Dynamically typed language with clear
migration path from Java
•  Ports to the JVM:
–  And of course JRuby with heavy investment
from SUN
–  Jython
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 94
The JVM might be more
important than Java
•  Lots of engineering and research
•  Highly optimized
•  Ubiquitous
•  Often already the predominant platform
•  Lots of application server and other
infrastructure
•  Other languages need such a platform
•  However, Google Android chose the language
but not the JVM

More Related Content

What's hot

Kaunas JUG#1: Java History and Trends (Dainius Mezanskas)
Kaunas JUG#1: Java History and Trends (Dainius Mezanskas)Kaunas JUG#1: Java History and Trends (Dainius Mezanskas)
Kaunas JUG#1: Java History and Trends (Dainius Mezanskas)Kaunas Java User Group
 
Java introduction
Java introductionJava introduction
Java introductionKuppusamy P
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java RatnaJava
 
Introduction to Java Part-2
Introduction to Java Part-2Introduction to Java Part-2
Introduction to Java Part-2RatnaJava
 
Migrating to Java 11
Migrating to Java 11Migrating to Java 11
Migrating to Java 11Arto Santala
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xGeertjan Wielenga
 
Java: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggeratedJava: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggeratedSteve Dalton
 
Top 10 Dying Programming Languages in 2020 | Edureka
Top 10 Dying Programming Languages in 2020 | EdurekaTop 10 Dying Programming Languages in 2020 | Edureka
Top 10 Dying Programming Languages in 2020 | EdurekaEdureka!
 
A begineers guide of JAVA - Getting Started
 A begineers guide of JAVA - Getting Started A begineers guide of JAVA - Getting Started
A begineers guide of JAVA - Getting StartedRakesh Madugula
 
Intoduction to java
Intoduction to javaIntoduction to java
Intoduction to javajalinder123
 

What's hot (20)

Kaunas JUG#1: Java History and Trends (Dainius Mezanskas)
Kaunas JUG#1: Java History and Trends (Dainius Mezanskas)Kaunas JUG#1: Java History and Trends (Dainius Mezanskas)
Kaunas JUG#1: Java History and Trends (Dainius Mezanskas)
 
Java 1
Java 1Java 1
Java 1
 
Java introduction
Java introductionJava introduction
Java introduction
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java
 
Evolution of java
Evolution of javaEvolution of java
Evolution of java
 
Introduction to Java Part-2
Introduction to Java Part-2Introduction to Java Part-2
Introduction to Java Part-2
 
Migrating to Java 11
Migrating to Java 11Migrating to Java 11
Migrating to Java 11
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
 
Java (1)
Java (1)Java (1)
Java (1)
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.x
 
Java features
Java featuresJava features
Java features
 
Java: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggeratedJava: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggerated
 
Top 10 Dying Programming Languages in 2020 | Edureka
Top 10 Dying Programming Languages in 2020 | EdurekaTop 10 Dying Programming Languages in 2020 | Edureka
Top 10 Dying Programming Languages in 2020 | Edureka
 
Netbeans IDE & Platform
Netbeans IDE & PlatformNetbeans IDE & Platform
Netbeans IDE & Platform
 
A begineers guide of JAVA - Getting Started
 A begineers guide of JAVA - Getting Started A begineers guide of JAVA - Getting Started
A begineers guide of JAVA - Getting Started
 
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 
Java JVM
Java JVMJava JVM
Java JVM
 
Basic java tutorial
Basic java tutorialBasic java tutorial
Basic java tutorial
 
Intoduction to java
Intoduction to javaIntoduction to java
Intoduction to java
 

Similar to History of Java 2/2

CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesJesse Gallagher
 
Engage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesEngage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesJesse Gallagher
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overviewJesse Warden
 
Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)Martijn Verburg
 
Openstack In Real Life
Openstack In Real LifeOpenstack In Real Life
Openstack In Real LifePaul Guth
 
Operations and Monitoring with Spring
Operations and Monitoring with SpringOperations and Monitoring with Spring
Operations and Monitoring with SpringEberhard Wolff
 
Server Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenServer Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenJUG Genova
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTaro L. Saito
 
Platform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle WorldPlatform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle WorldSimon Haslam
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Molieremfrancis
 
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel ZikmundNDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel ZikmundKarel Zikmund
 
Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Derek Buitenhuis
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar seriesOpen Mainframe Project
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 
Alfresco DevCon 2019 Performance Tools of the Trade
Alfresco DevCon 2019   Performance Tools of the TradeAlfresco DevCon 2019   Performance Tools of the Trade
Alfresco DevCon 2019 Performance Tools of the TradeLuis Colorado
 

Similar to History of Java 2/2 (20)

CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPages
 
Engage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesEngage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPages
 
Java
JavaJava
Java
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Stackato
StackatoStackato
Stackato
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)
 
Openstack In Real Life
Openstack In Real LifeOpenstack In Real Life
Openstack In Real Life
 
Operations and Monitoring with Spring
Operations and Monitoring with SpringOperations and Monitoring with Spring
Operations and Monitoring with Spring
 
Server Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenServer Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef Arendsen
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
 
Platform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle WorldPlatform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle World
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
 
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel ZikmundNDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
 
Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Stackato v5
Stackato v5Stackato v5
Stackato v5
 
2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series2020 oct zowe quarterly webinar series
2020 oct zowe quarterly webinar series
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Alfresco DevCon 2019 Performance Tools of the Trade
Alfresco DevCon 2019   Performance Tools of the TradeAlfresco DevCon 2019   Performance Tools of the Trade
Alfresco DevCon 2019 Performance Tools of the Trade
 

More from Eberhard Wolff

Architectures and Alternatives
Architectures and AlternativesArchitectures and Alternatives
Architectures and AlternativesEberhard Wolff
 
The Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryThe Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryEberhard Wolff
 
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncFour Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncEberhard Wolff
 
Microservices - not just with Java
Microservices - not just with JavaMicroservices - not just with Java
Microservices - not just with JavaEberhard Wolff
 
Deployment - Done Right!
Deployment - Done Right!Deployment - Done Right!
Deployment - Done Right!Eberhard Wolff
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for MicroservicesEberhard Wolff
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into MicroservicesEberhard Wolff
 
Microservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileMicroservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileEberhard Wolff
 
How Small Can Java Microservices Be?
How Small Can Java Microservices Be?How Small Can Java Microservices Be?
How Small Can Java Microservices Be?Eberhard Wolff
 
Data Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesData Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesEberhard Wolff
 
Microservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityMicroservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityEberhard Wolff
 
Self-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesSelf-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesEberhard Wolff
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology StackEberhard Wolff
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for InnovationEberhard Wolff
 
Five (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryFive (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryEberhard Wolff
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with JavaEberhard Wolff
 
Microservices: Architecture to Support Agile
Microservices: Architecture to Support AgileMicroservices: Architecture to Support Agile
Microservices: Architecture to Support AgileEberhard Wolff
 
Microservices: Architecture to scale Agile
Microservices: Architecture to scale AgileMicroservices: Architecture to scale Agile
Microservices: Architecture to scale AgileEberhard Wolff
 
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsMicroservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsEberhard Wolff
 

More from Eberhard Wolff (20)

Architectures and Alternatives
Architectures and AlternativesArchitectures and Alternatives
Architectures and Alternatives
 
Beyond Microservices
Beyond MicroservicesBeyond Microservices
Beyond Microservices
 
The Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryThe Frontiers of Continuous Delivery
The Frontiers of Continuous Delivery
 
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncFour Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, Async
 
Microservices - not just with Java
Microservices - not just with JavaMicroservices - not just with Java
Microservices - not just with Java
 
Deployment - Done Right!
Deployment - Done Right!Deployment - Done Right!
Deployment - Done Right!
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for Microservices
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into Microservices
 
Microservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileMicroservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale Agile
 
How Small Can Java Microservices Be?
How Small Can Java Microservices Be?How Small Can Java Microservices Be?
How Small Can Java Microservices Be?
 
Data Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesData Architecturen Not Just for Microservices
Data Architecturen Not Just for Microservices
 
Microservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityMicroservices: Redundancy=Maintainability
Microservices: Redundancy=Maintainability
 
Self-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesSelf-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to Microservices
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology Stack
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for Innovation
 
Five (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryFive (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous Delivery
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with Java
 
Microservices: Architecture to Support Agile
Microservices: Architecture to Support AgileMicroservices: Architecture to Support Agile
Microservices: Architecture to Support Agile
 
Microservices: Architecture to scale Agile
Microservices: Architecture to scale AgileMicroservices: Architecture to scale Agile
Microservices: Architecture to scale Agile
 
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsMicroservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
 

History of Java 2/2

  • 1. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Java: History and Outlook Eberhard Wolff Principal Consultant & Regional Director SpringSource
  • 2. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 2 Disclaimer •  These are my personal opinions. •  We will do a lot history, little outlook. •  You will learn a lot about high level architecture in Java by its history. •  So in the beginning….
  • 3. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 3 Before Java •  C++ predominant •  Easy adoption from C •  Better but less successful alternatives: •  Eiffel: Statically typed language with advanced type system •  Smalltalk: Clean dynamically typed object oriented language with a VM
  • 4. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. “The best way to predict the future is to invent it.” Alan Kay, Smalltalk Co-Developer
  • 5. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 5 The Beginning… •  Java was originally created for small consumer devices (and later set top boxes etc.) •  Was called Oak •  Simple/ simplistic / good enough language •  Weaker than Eiffel (type system) •  …and probably less powerful than Smalltalk •  Hardware independent
  • 6. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 6 Why was Java successful? •  Easy language with clear migration path from C/C++ •  Project shifted focus •  Applets & the Rise of the Internet •  SUN as an alternative to Microsoft •  I meant to say: standards
  • 7. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 7 What remains? Focus on small devices •  Mobile, embedded •  Especially: phones •  Jini tried this idea again •  And lately: SUN Spots •  For even smaller devices •  i.e just a few chips •  What can you do with that?
  • 8. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 8 What mains? Set Top boxes •  Blu-Ray is the DVD successor •  Blu Ray disc can be enhanced using Java •  Currently supported on Sony's Playstation 3 •  Finally Java is on Set Top boxes…
  • 9. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 9 What remains? Standards •  Standards are still used as a tool for innovation in Java •  Standard and innovation is otherwise considered a contradiction •  …but this is how it started •  Community still looks at standards •  …and does not always judge technologies purely by its value
  • 10. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 10 What remains? Simple Language •  JDK 1.5 / Java 5 introduced some work arounds •  Original Java: Primitive data types (int, long, float, double) are no objects •  …but there are object wrappers •  ...to handle everything uniform •  Workaround: Autoboxing (i.e. a primitive data type becomes an object if need to)
  • 11. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 11 Fun with Autoboxing public static void main(String[] args) { List list = new ArrayList(); Set set = new LinkedHashSet(); for (int x = 0; x < 10; x++) { list.add(x); set.add(x); } for (int x = 1; x < 6; x++) { list.remove(x-1); set.remove(x); } System.out.println(list); System.out.println(set); } [1, 3, 5, 7, 9] [0, 6, 7, 8, 9] Java Puzzlers by Joshua Bloch, Neal Gafter
  • 12. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 12 What remains? Simple Language •  No parametric polymorphism (type parameter / templates) •  JDK 1.5 Workaround: Changed compiler but same byte code •  So just type checking •  Problem: Limitations for reflection at runtime •  Otherwise a good approach and extension!
  • 13. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 13 What remains? Simple Language •  Several other enhancements in JDK 1.5 (methods with variable number of arguments) •  Workarounds for initial design decisions •  Java is not simplistic any more •  Is it still simple? •  Design goal: Bytecode should remain stable (.NET decided differently)
  • 14. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 14 What remains? Simple Language •  Checked Exceptions •  Default: Exceptions have to be caught or declared to be thrown •  …except for RuntimeExceptions •  Seemed OK: It forces you to think about error conditions •  But: Java is the only popular language with this concept •  What do you do with a checked Exception?
  • 15. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 15 Checked Exceptions: Output the error somewhere •  Probably hard to find – not in the log file •  Error makes the application just continue try { ... } catch (JMSException jmsex) { jmsex.printStackTrace(); }
  • 16. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 16 Checked Exceptions: Ignore the error •  Error makes the application just ignore & continue •  …and can never be detected try { ... } catch (JMSException jmsex) { }
  • 17. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 17 Checked Exceptions: Wrap the exception •  Lots of pointless code (wrapping) •  Every method will throw MyException •  Same effect as a RuntimeException: Every method can throw it •  …but you do a lot of wrapping and throws... try { ... } catch (JMSException jmsex) { throw new MyException(jmsex); }
  • 18. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 18 Take away •  Checked exceptions are (almost) unique to Java •  …and should only be used if really needed
  • 19. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 19 First applications: Applets •  Vision: From an HTML/HTTP based Web to networked servers with rich clients •  Distributed Objects Everywhere! •  But: –  Slow startup and bad performance –  Incompatible JDKs –  Often HTML is enough –  Lots of animation players etc.
  • 20. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 20 Applets: No success •  The vision was right, but… •  …even online Office applications use HTML + AJAX nowadays… •  It gets not more GUI focused •  Much better JavaScript support in browsers •  Java would have been an easier / more sound solution in many cases
  • 21. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 21 Example: Black Hole Applet http://gregegan.customer.netspace.net.au/ PLANCK/Tour/TourApplet.html •  It is hard to even find an Applet nowadays… •  Niche: Graphics with calculation on the client •  But: The idea is not dead yet…
  • 22. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 22 What remains? Applets •  JavaFX tries to resurrect this idea •  Small JVM + easy development for rich GUIs •  But: Fierce competition –  Adobe Flash – better adoption than Windows –  Microsoft Silverlight •  And: Rather slow development
  • 23. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 23 Server •  So the client side Java did not work out. •  What now? •  Let's try the server! •  Evolution from shared database to shared logic
  • 24. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Server
  • 25. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 25 Before Java •  CORBA/C++ was predominant and very complicated –  No garbage collection –  Manual thread and instance handling –  Lots of technology, not too much focus on business logic –  Many standards for services, some very hard to implement and use –  Death by committee •  So an alternative was needed
  • 26. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 26 J2EE: Java 2 Enterprise Edition •  Web focus –  Servlets/JSPs are even older •  But also distributed 2PC transactions, Message Orientied Middleware (JMS) •  Technical solution •  Other approaches also defined core Business Objects and not just technology •  Anyone remember IBM San Francisco? 1999 J2EE 1.2 = EJB 1.1+ JSP 1.1+ Servlets 2.2+ JDBC 2.0+ JNDI 1.2+ JMS 1.0.2+ JTA 1.0.1+ JTS 0.95+ JavaMail 1.1+ JAF 1.0
  • 27. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 27 J2EE vs. C++/CORBA •  Garbage Collection •  Automatic thread / instance pooling (EJB) •  Components define –  Thread pooling –  Instance handling –  Default decisions as opposed to roll-your-own on CORBA
  • 28. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 28 J2EE •  Tremendous success •  SAP, IBM, SUN, Oracle, BEA •  Original vendors (Orion, WebLogic, …) were bought •  Microsoft had to create .NET
  • 29. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 29 But… •  This is before Hotspot, JIT, optimized Garbage Collection etc. •  Bad performance •  Unstable middleware etc. •  In retrospect the success is surprising
  • 30. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 30 Why did J2EE succeed? User •  Thinking in the Java-Community: "J2EE is a standard by experts, is has to be suited for enterprise problems." •  …and Java is much simpler than what we use at the moment •  Open, standards based •  …and then the middleware company followed •  The next big thing after CORBA
  • 31. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 31 Back to the J2EE disaster   "Up to when I left [a large consultancy] in 2002, not one of our J2EE projects had succeeded." anonymous   Translate that to the € / $ lost   (Of course you can blame it on the customers and the process)   Why did it fail?
  • 32. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 32 Reasons for Failure: Distribution •  To access the same logic from different front ends it has to be distributed Web Server Java Client Mobile Client Business Logic (EJB Server) Database
  • 33. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 33 The disaster: Distribution •  "You have to be able scale the business logic independently from the web to handle high load." •  So you must have a web server and an separate EJB server •  Note that the logic is just used from the web server, so no different front ends •  All EJBs (1.0/1.1) are remotely accessible
  • 34. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 34 Distribution Database Web Server Web Server Web Server EJB Server EJB ServerEJB Server "I turn your software scalability problem in a hardware scalability problem." anonymous J2EE consultant
  • 35. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 35 The disaster: Distribution •  Complete and dangerous nonsense •  (almost always) •  A distributed call from the web server to the EJB server is orders of magnitude slower than a local call •  The marshalling and demarshalling might use more performance than the logic itself •  "Don't distribute your objects!" Martin Fowler
  • 36. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 36 The disaster: Productivity •  An Entity Bean (EJB 1.0-2.1) consists of: –  Three Java classes / interfaces –  A deployment descriptor (or part of it) –  …which is so hard to write that most generate it using XDoclet •  Also hard to understand
  • 37. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 37 How to write an EJB… EJB Standard Interfaces Generated by Application Server java.rmi. Remote javax.ejb. EJBLocalObject javax.ejb. EJBLocalHome Remote HomeRemote Interface Local HomeLocal Interface Implementation Remote Interfaces Implementation Remote Homes Implementation Local Interfaces Implementation Local Homes Implementation Developed by EJB developer Deployment Descriptor by EJB developer Web Service Endpoint Interface Implementation Web Service Endpoint Interface javax.ejb. EJBHome javax.ejb. EJBObject
  • 38. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 38 The disaster: Productivity •  Usually also a DTO (Data Transfer Object) is needed –  to transfer the data to the client / web tier –  …and of course the data has to be copied into it –  …so you need also a Stateless Session Bean (three Java classes/ interfaces + Deployment Descriptor)
  • 39. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 39 Productivity Server Client Session Beans Entity Beans Value Objects
  • 40. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 40 The disaster: Productivity •  All EJBs cannot really be tested without a container •  So people started to wrap POJOs (Plain Old Java Objects) into EJBs •  Even more code •  Not object oriented any more •  Workaround: Generators •  This hurt MDA •  …was often perceived as an EJB work around
  • 41. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 41 The disaster: Persistence •  Persistent objects •  Can be remotely accessed •  Synchronize state with database on each call •  So with a naïve implementation every get/set is a remote call (and a SQL query) •  Now imagine you want to edit some data… •  Reading n objects uses n+1 SQL queries •  1 Entity Bean = 3 classes (each technology dependent) + XML configuration •  Total usability and performance disaster
  • 42. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 42 But it has to be good for something… •  So you would need coarse grained persistent object •  With concurrent access by multiple users •  Why don't we have that in our applications? •  The standard cannot be wrong, right? •  This concept is still around
  • 43. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 43 What remains? J2EE •  J2EE's success is not based on excellent engineering •  J2EE has had very deep trouble and was still a success •  It is unlikely that Java Enterprise will go away •  …as it survived this when it was much weaker. •  People still think that a technology has to work because it is a standard •  …often they don't even question it.
  • 44. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 44 What remains? J2EE •  J2EE has been extended and renamed •  But some concepts are still around –  EJB very much resembles how CORBA servers are created and "optimizes" for bad garbage collection
  • 45. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 45 What remains? J2EE •  Examples: –  instance pooling obsolete because of thread safe Singletons and Hotspot VMs –  two phase commit often unnecessary and slow –  Still no good security concept: How do you express that a customer can only see his accounts? –  EJB Security is largely unchanged and can't handle a lot of common issues (instance based security, Access Control Lists, integration with common security technologies…)
  • 46. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 46 Fundamental problems J2EE •  Concept is based on small cluster and client/server •  What about cloud / virtualization / grid? •  Still not solved •  J2EE is invasive i.e. your code depends on the technology •  Hard to test, develop and port •  Object-oriented programming becomes hard: The decline of OO
  • 47. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 47 Early J2EE: Issues •  Performance and productivity problems •  Decline of OO •  But: The predominant platform in Enterprise •  So: What now? •  Fix the issues!
  • 48. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 48 Summary •  Small Devices •  Standards •  Simple Language •  Applets •  Server / J2EE Issues
  • 49. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 49 To come… •  Persistence •  Open Source •  Web •  Client •  Outlook
  • 50. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. J2EE issues: Persistence
  • 51. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 51 Persistence •  The need for fast persistence solutions is obvious for all enterprise applications •  Work around: Use JDBC •  Complex and error prone •  With Entity Beans even harder and a performance disaster Database
  • 52. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 52 It could have been avoided… •  TopLink was around before that (even for Smalltalk) •  NeXT did the Enterprise Object Framework before that •  Problem persists: Standardization committees do not look at prior art
  • 53. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 53 Persistence: Really solve the problem! •  O/R mappers were already well known (as mentioned) •  …but not used in the Java community •  Choosing the wrong persistence technology will lead to many problems –  Complex code –  Bad performance
  • 54. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 54 Persistence: Solving the Problem •  So: The usual approach: Create a standard •  JDO: Java Data Objects •  Technically sound •  Lots of implementations •  Some JDO vendors based their business on JDO •  But not adopted by any big vendor •  …and did not become part of J2EE
  • 55. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 55 Persistence •  People chose Hibernate as an Open Source product instead •  …and other projects like iBATIS and OJB were created •  Open Source victory over two standards: JDO and Entity Beans!
  • 56. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 56 The stories continues… •  JSR 220 (EJB 3) updated the Entity Bean model •  JPA – Java Persistence API •  However: –  New model was also usable outside a Java EE server –  Technically good, but why is it standardized as part of EJB then? –  Why are there two standards? JDO and JPA?
  • 57. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 57 Persistence War •  JPA won •  Backing by large vendors (Hibernate, Oracle, …) •  Basically no JDO implementations around any more •  So the persistence problem is solved •  (sort of)
  • 58. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 58 What remains? Persistence Wars •  Just a few years back JDBC was the (only) persistence technology •  Now O/R Mapper are the default •  But: They are complex pieces of software •  Caching, lazy loading, complex schema mappings … •  …and therefore a trade off •  …but often a better one •  Alternatives: Direct SQL with iBATIS, JDBC •  BTW: On .NET the default is ADO.NET not an O/R mapper •  Make your choice! •  And: Open Source is a viable alternative.
  • 59. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Open Source
  • 60. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 60 The rise of Open Source •  Struts: First Web Framework in 2000 •  (In retrospect it had a huge potential) •  (for optimization that is) •  …but much better than no framework at all •  Especially for the Java-in-JSP problems •  No JCP standard for web frameworks
  • 61. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 61 Open Source •  Struts offers no solution to the general productivity problem •  Hibernate solves at least persistence issues •  Spring appeared
  • 62. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 62 What Spring offers •  Dependency Injection to structure applications •  AOP to add transactions, security ... •  Simplified APIs for JDBC, JMS … •  Foundation for Spring Web Services, Spring Web Flow ...
  • 63. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 63 Why Spring was successful •  Solved the productivity challenges: Much simpler model •  Very flexible: Support for EJB, JMS, JDBC, Hibernate, JNDI, … •  So you can use it in almost any context •  …and you can use just the parts you need •  Code technology independent: Applications are more portable •  Promotes best practices and makes them easy: Testing, local access to objects… •  The rerise of OO
  • 64. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 64 Spring's impact •  Helped to solve the productivity problem of Java EE •  Made parts of J2EE (especially EJB) obsolete •  A lot of projects used Tomcat + Spring instead of J2EE •  No EJB, so no need for a full blown app server •  Transaction management still a point for app servers
  • 65. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 65 Open Source: Tomcat •  Started as Servlet reference implementation •  Became an Apache project •  Very fast and efficient Servlet container •  Today: Infrastructure for most Java projects •  Another example of Open Source •  Let's talk about Web for a while
  • 66. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Web
  • 67. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 67 The start for Web •  Servlets: A standardized way to handle HTTP with Java •  Mostly like CGI scripts •  …but in process •  Lots of Java code that outputs HTML •  Can we do better?
  • 68. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 68 JSP •  Java Server Pages •  Coincidence: ASP by Microsoft is called similar •  HTML + embedded Java •  + special tags •  + your own tags •  Easier than Servlets: No need to output HTML
  • 69. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 69 What remains: JSP •  Still predominant •  Embedding Java in JSPs is considered a Worst Practice™ nowadays –  No separation between logic and implementation •  …but JSP are compiled into Servlets / Java to enable exactly this •  JSPs cannot easily be tested (Servlet / Server dependencies) •  You should consider other template engines
  • 70. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 70 Next step: Struts •  Web MVC framework –  Model: The data –  View: Renders data –  Controller: Logic •  Clear separation and much better maintainability •  Good fit for request-response based processing
  • 71. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 71 Struts: The ugly •  Not very flexible •  Superclasses instead of Interfaces •  Dependencies on the ActionServlet •  Evolutionary dead end –  No new versions for a long while –  Struts 2 is completely incompatible –  Spring MVC is a worthy successor and much more flexible
  • 72. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 72 A quick look at other approaches… •  ASP.NET had a completely different concept: •  Components (buttons, text fields etc.) used to set up web pages •  Components send events •  Developer can handle events •  Much like traditional GUI development •  Web Objects (NeXT/Apple) has a similar approach (and was the first attempt in this field)
  • 73. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 73 Co evolution applied •  JSF uses this approach •  …and is a standard •  Note: MVC or component-based is a trade off, no superiority •  Rich GUIs or request processing? •  JavaScript allowed?
  • 74. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 74 And… •  Microsoft is working on MVC frameworks (ASP.NET MVC) •  So while Java travels from MVC to component based •  … .NET goes from component based to MVC
  • 75. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 75 Web: What remains •  There are a lot of competing Open Source web frameworks •  This drives innovation •  …and fragmentation •  This competition sets Java apart from .NET •  ...and makes it valuable
  • 76. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 76 New issues… •  Several pages are part of a business process •  Data should be shared during the process •  Can not be put in the HTTP session: Otherwise just one process can be executed in parallel •  Process should be explicitly handled
  • 77. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 77 Conversations •  Allow to model processes •  Data can be stored with a process scope •  Also benefits for O/R mappers: Caches / Unit of work can be scoped in the conversation •  For example Spring Web Flow •  But enough about Web…
  • 78. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Client
  • 79. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 79 Client •  Remember: The origin (Applets) •  With a predominant client platform portability (Windows) is often not so important here •  …so I believe it is not the most important area for Java •  But: One language on client and server
  • 80. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 80 Client in the beginning •  Basic infrastructure: AWT –  Abstract Windowing Toolkit –  Every GUI element is shadowed by a native GUI element –  Better performance, better integration in the platform –  First version was done quickly •  Portability issues for application and AWT itself
  • 81. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 81 Swing •  Idea: Do every in Java •  Much easier portability •  Less integration with the underlying platform •  Became a viable solution after Java performance issues were solved •  Much preferred over AWT nowadays
  • 82. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 82 Eclipse RCP •  Eclipse created SWT framework •  Architecture comparable to AWT •  Ironic: IBM originally objected AWT because they had the most platforms to support •  Eclipse also has a Plug In system –  later OSGi –  Now also on the server •  This created RCP •  Widely used
  • 83. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 83 RIA •  Rich Internet Applications •  Provide a non-HTML based rich GUI •  Silverlight, Flex / Flash, JavaFX •  I believe this will not be won by JavaFX •  …but it will make thin clients interesting for a lot more applications •  …and the server is the strong point for Java
  • 84. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Outlook
  • 85. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 85 Java will stay •  A lot of long running buy ins from vendors… –  IBM, SAP, SUN, Oracle / BEA, SpringSource  •  ...and customers –  "We are using Java / will be using it for 10+ years." –  i.e. for ever
  • 86. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 86 Java will stay •  I think success of Java is unparalleled in the history –  Seemingly comparable previous success: COBOL, C++ –  So much buy in –  Binary compatibility –  Standards (Java EE, Servlets…) •  …so comparisons are hard
  • 87. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 87 Open Source will become more important •  Better capabilities to innovate •  Low risk: Commercial support, can be used freely •  Vivid Open Source Java community •  Everything is Open Source now, even Java itself. •  …so even the platform can be changed.
  • 88. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 88 Java EE will become less important •  Often already replaced by Tomcat + Spring •  In some areas (Investement Banking) Java EE was never really used •  Alternative approaches for cloud, grid etc. are needed and exist •  Java EE 6 defines profiles –  A: Web Server –  B: Web Server + JTA + Component model –  C: Full blown
  • 89. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 89 Middleware will become modular •  One-size-fits-all is officially ended by Java EE 6 •  Very diverse requirements –  Web: Just Servlets + some framework –  SOA: JMS + management –  SOA: JMS + JDBC + transaction –  Batch •  Steps beyond Java EE profiles are needed
  • 90. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 90 OSGi will become interesting on the server as well •  Basic infrastructure for many embedded systems •  …and Eclipse •  Strong modularity •  …with coarse grained components •  Better architecture
  • 91. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 91 OSGi will become interesting on the server as well •  Modular middleware can be customized depending on usage context •  Java EE 6 is also modularbut more is needed •  Individual updates for bundles •  So for a fix in the customer module just this module has to be replaced •  Less testing, less complex build process, … •  Heavy interest in the Enterprise •  Come to Adrian Colyer's SpringSource dm Server talk!
  • 92. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 92 New languages will be interesting •  Java (the language) is not evolving fast enough •  …and was not such a good language from the start (only better) •  …and only work-arounds were added •  …and dynamically typed languages are becoming fashionable now •  You should use Java only with AOP (Spring / AspectJ)
  • 93. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 93 Some examples for new languages •  Java influence: –  Scala: Better statically typed language –  Groovy: Dynamically typed language with clear migration path from Java •  Ports to the JVM: –  And of course JRuby with heavy investment from SUN –  Jython
  • 94. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. 94 The JVM might be more important than Java •  Lots of engineering and research •  Highly optimized •  Ubiquitous •  Often already the predominant platform •  Lots of application server and other infrastructure •  Other languages need such a platform •  However, Google Android chose the language but not the JVM