Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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: Java language (and many others, though not widely used) .NET Platform: C# Visual Basic.NET C++ with Managed Extensions (and many others, more likely to see wide use) Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes Major C# / Java Language Differences Properties Attributes Events / Delegates Value Type (Structs) unsigned types Auto-boxing explicit interface implementation Non-virtual methods by default (like Delphi) Override keyword Different method lookup rules foreach multi-dimensional 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 JDO SQL/J ADO.NET ODBC 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: JSP/Servlets Tab libraries JSF Third party toolkits (Struts etc.) .NET: ASP.NET Server-side controls Server-side OnClick Less emphasis on MVC Some toolkits provide server-side OnClick just like the .NET Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes Rich Client Presentation Toolkits Java: AWT Swing “Lightweight” Layout management, the bane and the glory of Swing development SWT and other alternatives available .NET: WinForms “Heavyweight” = Native Less focus on automatic layout, most layouts are pixel-based An SWT clone is available WinForms is “1.0” and it shows 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: JRMP or IIOP wire protocol RMI Registry Stubs/Skeleton Can customize with Socket Factory Distributed Garbage Collection! .Net Remoting: XML or native wire protocol, over HTTP/TCP Activator Can customize with Channels 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 Many third party variations also! J2ME is Java with many features removed Run on many cell phones, Palm devices, etc. Much greater market penetration so far .NET offers the Compact Framework .NET CF is the .NET Framework with many features removed Runs on Pocket PC, SmartPhones, various embedded devices 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 patents 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 NonTechnical 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/Compare.ht ml Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes THE END Kyle Cordes [email protected] (636) 219-9589 Slides will be on my web site, http://kylecordes.com Copyright © 2003 Oasis Digital Solutions Inc. / Kyle Cordes