Sunteți pe pagina 1din 59

Java/J2EE and .

NET

Similarities and Differences


in the Dominant Enterprise
Computing Platforms

Kyle Cordes
Oasis Digital Solutions Inc.

Gateway Java User Group


Sep. 2, 2003
Kyle Cordes

❚ Developer / “Architect”
❚ Consultant and Trainer
❚ Proponent of agile, iterative, test-intensive
development
❚ Java, EJB, Oracle, SQL Server, Delphi,
C++, Python, Ruby, EJB, XML, multi-tier,
etc.
❚ kylecordes.com
❚ Oasis Digital Solutions Inc.
❙ Outsourced development and other services
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Disclosures - I Like all of the
following:

❚ Java
❚ .NET
❚ Choice of deployment platforms
❚ Great development tools
❚ Value for the customer / user

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Quick Poll - How many of you:

❚ Use Java at work?


❚ Use .NET at work?
❚ Use a non-Java language on the JVM?
❚ Deploy to Windows servers?
❚ Deploy to Unix servers? Solaris? AIX?
HPUX?
❚ Deploy to Linux servers?
❚ Use a non-Sun JVM, from IBM, HP, etc.?

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Agenda

❚ Overview
❚ Technical Similarities and Differences
❚ Non-Technical Issues
❚ Q&A

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


What is Java? What is J2EE?

❚ Platform (Infrastructure under your app)


❚ Managed runtime environment
❚ Marketing term for a diverse set of
technology
❚ Spec and Product (from Sun and many
others)
❚ Market
❚ J2EE is the name of the “high-end”
features, specs, libraries, etc.
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
What is .NET?

❚ Platform (Infrastructure under your app)


❚ Managed runtime environment
❚ Marketing term for a diverse set of
technology
❚ Product (from Microsoft)
❚ Spec (though less so)
❚ Market (though less so)
❚ There isn’t an overriding brand name for
the enterprise features, some of them are
WSE Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
What Else is .NET?

❚ Marketing term extends beyond the


platform:
❙ .NET My Services
❙ Software as a Service
❙ Synonym for “new”, like “NT”

❚ Most of this is going away, Microsoft is


removing the .NET brand name from the
next version of many products, as already
happened with Windows Server 2003.
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
The Essence of .NET

❚ Platform for building applications - like an


OS
❚ Much like Java at both macro and micro
level
❚ Microsoft’s alternative vision for what a
Java-like system should look like - “the
same, but different”
❚ The Future of the Windows platform

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


.NET from a Java Perspective

❚ Start with most of the best aspects of the


Java platform (both features and texture)
❚ Same overall idea, different names and
many different design decisions
❚ Improve on some areas, with various
twists
❚ Puts some things in platform / languages
which are conventions or add-ons in Java.

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Platforms

❚ Java tends to make platform irrelevant


❚ .NET integrates with and boosts the value
of the Windows platform (*)

❚ (I’ll mention Mono later)

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Technical Similarities and Differences
Runtime Environment

❚ Both provide a managed runtime


environment:
❙ Intermediate Language / bytecode, not native
code
❙ Garbage collection
❙ Security
❚ Java JRE offers JIT and Hotspot
❚ .NET CLR offer JIT and ngen
❚ Common misconception among .NET
partisans is that Java is interpreted
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Virtual Machine vs. Runtime

❚ I’ve seen the idea put forth that a


“runtime” is greatly different from a
virtual machine.
❚ Technically speaking, not much difference

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Languages

❚ Java Platform: ❚ .NET Platform:


❚ Java language ❚ C#
❚ (and many others, ❚ Visual Basic.NET
though not widely ❚ C++ with Managed
used) Extensions
❚ (and many others,
more likely to see
wide use)

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Major C# / Java Language
Differences

❚ Properties ❚ Non-virtual methods


❚ Attributes by default (like
Delphi)
❚ Events / Delegates
❚ Override keyword
❚ Value Type (Structs)
❚ Different method
❚ unsigned types
lookup rules
❚ Auto-boxing
❚ foreach
❚ explicit interface
❚ multi-dimensional
implementation
arrays
❚ using

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


C# Unsafe Code

❚ Java:
❙ Write your unsafe code in C / C++ / etc.
❙ Call it with JNI - VM checks security
❚ C#:
❙ Use the same language
❙ Mark it as unsafe
❙ Runtime checks security
❚ Given that some operations require unsafe
code, writing it in the same language
seems like a better solution to me.
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Libraries

❚ Java class libraries


❙ java.io
❙ javax.sql
❚ .NET BCL Base Class Library
❙ System.IO
❙ System.XML
❙ ...

❚ Roughly comparable in scope


Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Naming Conventions

❚ Most of .NET naming/casing conventions


are different from Java’s
❙ MethodName vs methodName
❙ Package.Name vs package.name
❚ Different just to be different, in my opinion
❚ Many more things are cased LikeThis, so
the casing carries slightly less information
❚ Microsoft no longer recommends
Hungarian
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
DBMS Connectivity

❚ JDBC ❚ ADO.NET
❚ JDO ❚ ODBC
❚ SQL/J ❚ OLE-DB, which also
supports nonrelational
data sources

❚ JDBC Type 4 ❚ .NET Managed


Provider

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Deployment

❚ Java:
❙ Class files / Jars
❚ .NET:
❙ Assemblies
❚ J2EE: Choose and install J2EE server,
generate and compile EJB stubs, set a
bunch of XML files right, create nested
JARs, EARs, etc.
❚ .NET: Copy assemblies and a few config
files to a directory served by IIS
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
JARs, EXEs and DLLs

❚ .NET Assemblies are substantially similar


to JARs, but they have extra header
information to make them valid Win32
EXEs or DLLs
❚ The header includes a stub to connect to
the .NET Runtime
❚ Result: to the end user, .NET applications
have the same kinds of files as native.
❚ Big advantage in user acceptance
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Classpath

❚ Commonly complained about by Java


detractors
❚ .NET has a similar mechanism: load from
the same directory, load from a global
location (GAC), load from configured
locations (much like a classpath)
❚ .NET does not have classes as standalone
files, which simplifies things.

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Versioning

❚ .NET Assemblies carry metadata with


version information
❚ .NET Assemblies reference each other by
version
❚ Side-by-side deployment is easy, without
the need to segregate Jar files
❚ Version interop issues are similar - it’s
possible to load class Foo version 1.5 and
class Foo version 2.0, but they aren’t the
same class.
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Web Presentation Toolkits

❚ Java: ❚ .NET:
❚ JSP/Servlets ❚ ASP.NET
❚ Tab libraries ❚ Server-side controls
❚ JSF ❙ Server-side OnClick
❚ Third party toolkits
❚ Less emphasis on
(Struts etc.)
MVC

❚ Some toolkits provide


server-side OnClick
just like the .NET

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Rich Client Presentation Toolkits

❚ Java: ❚ .NET:
❚ AWT ❚ WinForms
❚ Swing ❚ “Heavyweight” =
❚ “Lightweight” Native
❚ Layout management, ❚ Less focus on
the bane and the automatic layout,
glory of Swing most layouts are
development pixel-based

❚ SWT and other ❚ An SWT clone is


alternatives available available
❚ WinForms is “1.0” and
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
XML Support

❚ Java: JAXP and other APIs,


implementations from many vendors
❚ .NET: Built-in (System.XML, also including
interesting pull-model parsing)
❘ Built-in Schema, Xpath, XSLT, SOAP 1.1

❚ .NET uses XML itself extensively, while


Java uses lots of Properties files for older
configurations; this is an artifact of the
timing.
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Distributed Computing

❚ J2EE: RMI, CORBA, SOAP


❚ .NET: Remoting, SOAP, DCOM
❚ There are third party .NET COBRA
implementations.
❚ There are third party Java DCOM bridges

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


RPCs / Distributed Objects

❚ RMI: ❚ .Net Remoting:


❚ JRMP or IIOP wire ❚ XML or native wire
protocol protocol, over
❚ RMI Registry HTTP/TCP
❚ Stubs/Skeleton ❚ Activator
❚ Can customize with ❚ Can customize with
Socket Factory Channels
❚ Distributed Garbage
Collection! ❚ Distributed Garbage
Collection!

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Web Services

❚ RPCs, Metadata, Discovery, Directories


❚ SOAP, WSDL, UDDI, etc.
❚ .NET:
❙ SOAP and WSDL in the box from Day One
❙ More coming in the “WSE”
❚ Java:
❙ Some support in the box
❙ many strong solutions from 3rd parties
❙ Much more in the box coming soon
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
[WebMethod]

❚ Extensively hyped, great for demos


❚ Not an important difference in a large app
❚ Provided by several Java WS
implementations, I was using one before
.NET existed
❚ Ludicrous to hold the fact against Java,
that Java predates web services
❚ Upcoming versions of Java and .NET will
offer very similar WS support
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Clustering

❚ J2EE:
❙ Clustering provided by App Server
❙ Sessions maintained by the App Server
❙ Platform provides the spec
❚ Net:
❙ Clustering provided by OS
❙ Sessions maintained by IIS/OS/runtime
❙ Platform (Windows Server) provides the
implementation

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Implementing Complex Services

❚ Service Oriented Architectures are now


the dominant paradigm
❙ Client app doesn’t know whether server uses
domain objects
❚ Stateless services
❚ see Patterns of Enterprise Application
Architecture, Fowler

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


The J2EE Approach

❚ Stateless Session Beans for the Service


Facade
❚ Entity Beans for persistance

❚ Many variations and recommendations out


there

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


The .NET Approach

❚ Web Services or Remoting for the Service


Facade
❚ O/R mapping is not in the box
❚ Instead, very convenient and powerful
data access components are used
❚ Thus, Transaction Scripting favored over
Domain Objects
❚ Of course, many developers use O/R
mapping and domain-object-based
development. Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Message Oriented Middleware

❚ Java:
❙ JMS and MDB specification
❚ .NET:
❙ Easy access to Microsoft Message Queue
❙ COM+ Queued Components (similar to MDBs)

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Small Device Support

❚ Java offers J2ME ❚ .NET offers the


❙ Many third party Compact Framework
variations also! ❚ .NET CF is the .NET
❚ J2ME is Java with Framework with many
many features features removed
removed ❚ Runs on Pocket PC,
❚ Run on many cell SmartPhones, various
phones, Palm devices, embedded devices
etc.
❚ Much greater market
penetration so far
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
In Java / J2EE, not in .Net

❚ O/R Mapping, in the form of Entity Beans


❚ Wider array of utility APIs
❚ Public profiling and debugging APIs like
JVMPI, JPDA

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


In .Net, not in Java / J2EE

❚ ASP.NET Server side controls


❚ XML Serialization
❚ Precompilation to native code
❚ Enumerations, Attributes, etc.

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Java / .NET Interoperability

❚ Easy to call back and forth with Web


Services
❙ Appropriate only for large-grained EAI
interaction
❚ Much Faster to call back and forth with
CORBA
❚ Fast but inpleasant to interoperate with
COM

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Mono

❚ “an effort to create an open source


implementation of the .NET Development
Framework”
❚ Runs on Linux
❚ Includes runtime, compiler, partial class
libraries, various other infrastructure
❚ http://www.go-mono.com/
❚ Ximian, the sponsor, recently acquired by
Novell
❚ Questionable legal status given the MS
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Coming Soon in Java:

❚ Generics
❚ Auto-boxing
❚ for() that works like foreach()
❚ Attributes
❚ Typesafe enums

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Coming Soon in .NET:

❚ Generics
❚ ObjectSpaces (transparent persistance
like JDO? XPath-like access to objects?)
❚ Async interfaces for many more
opertaions

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


The Pet Shop

❚ This Sun example web application has


been used for a number of highly
publicized benchmarks
❚ None of them really mean much
❚ Overall, you’ll get similar performance
with Java and .NET

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Markets, Money, and Other Non-
Technical Issues
Deployment Platforms

❚ Java: Almost any


❚ .NET: Any platform you want, as long as
it’s Windows

❚ To some customers, the first point is a big


advantage; to others, the second is a big
advantage.

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Open Source

❚ Lots of activity on both Java and .NET


❚ Many open Java projects have been ported
to .NET.

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Jobs

❚ Java is still apparently far ahead


❚ St. Louis has a remarkable concentration
of large Java shops
❚ There are many MS shops here also (and
quite a few MS, and now .NET-centric
consulting firms).
❚ Microsoft technology very popular is
small/ medium sized firms

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Market Size

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Innovation

❚ Microsoft can advance .NET and C#


forward faster, because they have less
involvement / resistance from other
companies

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Money - What’s it cost to develop?

❚ You can develop for either for little or no


money
❙ JDK free download
❙ .NET Framework SDK free download
❚ Some features are not in the free
downloads

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Cost Per Developer

❚ Java can cost almost nothing per


developer per year; or it can cost several
thousand dollars per developer per year.
❚ Microsoft offers a compelling package with
MSDN Universal

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Deployment Cost

❚ .NET deployment is “free” if you don’t


count the OS
❚ J2EE can be anywhere from free (Linux +
JBoss) to very expensive (HPUX, AIX +
WebLogic or WebSphere, etc.)
❚ Unreasonable to compare the cost of .NET
and J2EE per se, since the Java cost can
vary tremendously by which app server
you choose.

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


The Bottom Line

❚ More alike than different


❚ Technically, it’s unlikely that you will
succeed with one and fail with the other
❚ Java is many places where .NET is not
❚ .NET is much better integrated with
Windows, obviously the dominant platform
for many customers
❚ Java is a broad market with many
producers, while .NET is very MS-centric.
Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes
Talk Offer

❚ This talk, or one like it with more details


❚ In your organization
❚ For Developers
❚ For Managers
❚ No Cost (in town)
❚ No Obligation

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


XPSTL - Extreme Programming in
St. Louis

❚ Interested? Join the mailing list at


xpstl.org

❚ Worthwhile even if you are only interested


in parts of XP… for example, come learn
about test-intensive development.
❚ Tomorrow night at CAIT, see web site for
details.

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Questions?

❚ Experiences?
❚ Critiques?
❚ Advice?

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


Links

❚ http://www.daimi.au.dk/~beta/ooli/Compa
re.html

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes


THE END

❚ Kyle Cordes
kyle@kylecordes.com
(636) 219-9589

❚ Slides will be on my web site,


http://kylecordes.com

Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes

S-ar putea să vă placă și