29/11/2005 © 2006 IBM Corporation
Java, SOA and Open source
Jouko Ruuskanen
Senior IT Architect
IBM Software
Agenda
Is Java Dead?
SOA and Business Driven Development
Java platform vs Microsoft
Java and SOA
Tiobe Programming Language Index
http://www.tiobe.com/tiobe_index/index.htm The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the world-wide availability of skilled engineers, courses and third party vendors. The popular search engines Google, MSN, and Yahoo! are used to calculate the ratings. Observe that the TIOBE index is not about the bestprogramming language or the language in which most lines of codehave been written.
Use of Java EE for Development in SMBs up by 50% in Last Six Months
According to New SMB Development Survey - Jan. 24, 2006
JDJ News
A New Evans Data Survey reveals that
sixty percent of SMB developers will
target Java/J2SE/Java EE at least some of the time this year and 20% are
spending the majority of their time developing in Java
. Next year Java
development is expected to grow to almost 70% of the SMB development population with 35% dedicating the majority of their time to development using Java.
"Developers in SMBs do not have as many resources or the budgets that larger development shops have, so they need to go with what works now, not what they can learn and put into use six months or a year from now.
Java works, it has worked
for a long time and there's a tremendous body of knowledge and
expertise surrounding the technology
," said John Andrews, president of Evans
Data.
"The race to market is critical for the SMB developer and, by using
Java, they are able to meet their deadlines and budgetary restraints."
Eclipse
Since this day in 2001, when IBM made available the source code for the Eclipse platform under an open source license at eclipse.org, Eclipse has grown to include 66 open source projects and is the basis for more than 1,300 products. According to IDC, Eclipse is the market leading Java IDE with 2.27 million users
worldwide, which demonstrates a remarkable level of support for open source innovation and collaboration.
The initial eclipse.org consortium grew quickly from an 8-member group including IBM and Rational Software, to today's 152-member-strong Eclipse Foundation. Java Development Tools (Java IDE) with its incremental compiler, the Standard
Widget Toolkit (SWT) and the Eclipse platform as a more general Rich Client Platform (RCP) are among the many innovations made possible by Eclipse. Within IBM SWG, Eclipse has been adopted as the open source development
platform across all our brands, and today more than 100 IBM products are based on Eclipse
The Eclipse Process Framework (EPF) is a resource for guidance on software development stemming from IBM's contribution of portions of the Rational Unified Process to the Eclipse Foundation. It comes as no surprise that the EPF has emerged as a widely trusted source for developers worldwide, with thousands of downloads recorded since the first EPF assets became available in February 2006.
Magic Quadrant for OOA&D Tools, 2H06 to 1H07
Developer productivity
Numerous attempts to compare productivity
through scenarios has been made
Results from the latest survey by Branham
Group (1H/2006):
– Challenge: Make online solutions for an insurance company, that solely operates over the Internet
– IBM’s tools were more productive in 7 out of 8 areas
– Microsoft were unable to deliver half of the requirements
– Wizards reduces the need for manual coding in IBM solutions. Three times more manual coding required in Microsoft solutions
– IBM solutions are easier to test
– IBM offers a broader set of tools
– Microsofts solution required more components making the solution harder to understand and manage
– Several central elements have to be handcoded in a Microsoft solution
What is Service-Oriented Architecture (SOA) ?
§
SOA is different things to different people
:
–
a set of services that a business wants to expose to their
customers and partners, or other portions of the organization
–
an architectural style which requires a service provider, requestor
and a service description
–
a set of architectural principles, patterns and criteria which
address characteristics such as
modularity, encapsulation, loose
coupling, separation of concerns, reuse, composability
–
a programming model complete with standards, tools and
technologies such as Web Services
–
A middleware solution optimized for service assembly,
orchestration, monitoring, an management
Business Executive, Analyst Architect Developer IT Architect Software and System Developer
And of course not everything needs to be SOA based…
–real time systems–sometimes there’s no need for integration (homogenous environments)
SOA Reference Architecture: ESB Positioning
Apps & In fo AssetsBusiness Innovation & Optimization Services
De
velopment Services
Interaction Services Process Services Information Services
Partner Services Business App Services Access Services
Integrated environment for design and creation of solution assets Manage and secure services, applications & resources Facilitates better decision-making
with real-time business information
Enables collaboration between people, processes & information
Orchestrate and automate business
processes
Manages diverse data and content in a
unified manner
Connect with trading partners
Build on a robust, scaleable, and secure services environment
Facilitates interactions with existing information
and application assets ESB
Facilitates communication between services
IT Serv ice Manageme n t Infrastructure Services Optimizes throughput, availability and performance
SOA and BPM
Benefits of implementing SOA are realized at the business level
– SOA gives flexibility to business processes
– SOA services should ideally be business level services, owned and governed by business, not IT
Business is probably not interested in how and where the services are implemented
Business is interested in fexibility, reliability, and ROI
While both .Net and Java can be used to implement business SOA services, Java gives even more reliability, flexibility, scalalibility, productivity - and independency of vendors
“Innovation is not only about new product development, it's about innovating new processesand innovating new business
models.”-BDD for SOA in the Larger Context
Business Analyst Document Business Strategy Capture Business Goals, Objectives and Requirements Trace Business Objectives, Requirements & Create Business Use Case Outlines Trace Requirements & Architect SystemUse Case Realizations Create & Manage
System Requirements and Use Cases
Architect Model Services Project Manager Business Strategist Understand Risk, Project Costs, and ROI
Identify and Manage Projects and Resources Database Developer Deploy/Run Monitor Business Operations Manager Runtime Process Server Portal Business Monitor EAR Team Unifying Platform
Choreograph services using BPEL, WSDL, etc. Configure Human Task Manager (including Ad-Hoc) & Client
Use Business Rules, State Machines, Web Services,
Adapters, ESB, etc. Integration Developer
Tester Verify Quality Implement Services, & expose as (Web) Services Developer Develop Portlets (App UI and Monitor) Create Financial Reports & ROI Estimates Create, Simulate & Analyze As-Is Business Model Create Observation Model with KPIs & export to Monitor Create, Simulate, Analyze and Optimize To-Be Business Model Run-time Statistics
Microsoft SOA
Microsoft barely acknowledges SOA in their marketing
–
true SOA is really a threat to MS!
Microsoft truly believes it’s the only ”standard”
–
Web Services may be one of the few exceptions
Microsoft tools
–
guide delevelopers towards increasingly proprietary technologies
–
weak business modeling tools (Visio + ODBA Plugin)
Tight Windows integration
–
MS pushes enterprise functionality into the OS layer
• ”ESB” is Windows (WCF)!Windows Communication
Foundation
Point to point communication model – not a brokered network, not an ESB (Need BizTalk for ESB-like functionality)
WCF is a library of .NET classes – not an application or a server
– To use it, you write code and host (or control the hosting of) the service
Now Microsoft has 4 competing styles of asynchronous messaging, each with its own set of capabilities and management procedures • Native MSMQ • BizTalk MSMQT • WCF asynchronous messaging • SQL Server 2005 Service Broker
WWF is a library of .Net classes – not an application or a server
You have to "host" the workflow engine in your own application, instantiate workflow instances, manage the instances, etc.
– This involves writing detailed, low-level code
– There is no WWF server, no WWF management console, etc.
There is no built-in support for human workflow
Invoking a workflow, invoking a web service, and invoking a .Net class method are all done differently – there isn’t an overall “service” concept
In spite of the Microsoft’s tenets of Service Orientation, you pass classes to the workflow, not documents or schemas
Targeted towards “product” developers, not “application” developers
Windows Workflow
Foundation
Java and SOA
Java is a first-class candidate for building SOA solutions
– J2EE is based on industry standards and supported by all other major ISV’s
– Broad platform support – required by customers
– Scalability, high availability and failover support is build into the model
– Community lead (JCP)
– Access to back-end systems provided through standard Jave connectors
– Multi year experience building secure systems on J2EE technology
– J2EE solutions can be build with a long range of commercial as well as free tools.
– The Eclipse framework allows vendors to place their tools inside a known and managed framework
– No Windows security issues and patch management problems
– Incremental, generally backwards compatible platforms
JBI
– IBM & BEA have their own ESBs
Services
Open SOA industry alliance – www.osoa.org
Two main projects:
– Service Component Architecture (SCA)
• aims to provide a model for the creation of service components in a wide range of languages and a model for assembling service components into a business solution
– Service Data Objects (SDO)
• aims to provide consistent means of handling data within applications, whatever its source or format may be
SCA and SDO used together provide a powerful and flexible way of
building applications around a service-oriented architecture.
Service Component Architecture (SCA)
Can be compared to WCF
– both provide a base for SOA
• bindings, annotations/attributes, WS, call styles etc
– SCA differences
• dependencies: module wiring
• supports many languages (but does not require WCF or CLR…)
• can use SDOs, whereas WCF binds you to… WCF
Implementations
– SCA: Hydra/Rogue Wave, WAS 6.1, WPS 6.0/IBM,EDA Suite/Oracle…
– SDO: BEA Aqualogic DS, IBM WAS, SAP NetWeaver, Roque Wave HydraSDO..
– Open Source: Tuscany project
(Apache), Eclipse SOA Tools Platform, SOA PHP
Java EE 5
It’s about simplification… J2EE has indeed become complex
– complexity is why Spring was born…
– Most boilerplate requirements have been eliminated, and XML descriptors are now optional. For example, the ejb-jar.xml descriptor is no longer necessary in most cases.
– More defaults are available, with a special emphasis on making them meaningful. – Developers now have fewer details to remember.
– Web service support is simpler, and the number of supported standards has increased.
– The EJB software programming model is significantly simpler.
– The new Java Persistence API is available to all Java platform applications, including those based on EJB technology.
– JavaServer Faces technology has been added to make web application design more convenient.
Java EE 5 simplified programming model
@Annotations
–
metadata – ”instructions” - embedded in code
• code generation• deployment information
–
can be used for:
• Defining and using web services • Developing EJB software applications • Mapping Java technology classes to XML • Mapping Java technology classes to databases • Mapping methods to operations
• Specifying external dependencies • Specifying deployment information,
including security attributes – extensible
@WebService
public class HelloServiceBean { public String sayHello(String name) {
return "Hello "+ name + " from HelloServiceBean"; }
Comparison EJB 3.0 vs. 2.1
@Statelesspublic class PayrollBeanimplements Payroll {
@Resource private DataSource empDB; public void setBenefitsDeduction(int empId,
double deduction) { ...
Connection conn = empDB.getConnection(); ...
} ... }
public class PayrollBean
implements javax.ejb.SessionBean { SessionContext ctx;
DataSource empDB;
public void setSessionContext(SessionContext ctx) { this.ctx = ctx;
}
public void ejbCreate() {
empDB = (DataSource)ctx.lookup("jdbc/empDB"); }
public void ejbActivate() { } public void ejbPassivate() { } public void ejbRemove() { }
public void setBenefitsDeduction(int empId, double deduction) {
...
Connection conn = empDB.getConnection(); ...
} ... }
Summary of findings
Java as Open Source
OpenJDK, GlassFish & Mobile
Good software is good software regardless of the licensing model
JCP was and still is more of an industry group building standards
Standards enable multiple implementations of a given technology
True standards come from shared knowledge
Some benefits
–
more people see the code, and it is used and tested more widely
• quality is likely to improve–
enables new innovation
Java EE 5 and other frameworks
In the beginning there was nothing: no Java and no data.
Then someone said, let there be data and relational databases with SQL were born.
And someone said, let Java talk to databases, and JDBC was born.
And someone saw that JDBC was good, but someone else saw that JDBC was bad, and EJB with CMP were created.
And someone said, J2EE containers are bad and POJO has resurrected.
And entity beans were slow and heavy; Hibernate was born and people forgot SQL, which was a sin.
And someone said, J2EE is no good, and he divided Spring framework from J2EE.
And fifty more people said nothing is good, and they created fifty more Java frameworks. And poor Java Joe said, "I'm sick and tired of this variety. I'm going back to Java EE.“
And so he did and created Java EE 1.5 and it was good. Perhaps it was not the best, but it gave people a common ground and fertile soil for seeds of a new generation of enterprise Java applications