1 / 26

Java versus .NET

Java versus .NET. The Heavyweight Championship Showdown. Why are we here?. Times are changing The once powerful Java has a new challenger Should we rethink our alliances? Should we abandon Java? Should we learn .NET? Should we be afraid? (Spoiler: Don’t panic quite yet).

ansel
Télécharger la présentation

Java versus .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java versus .NET The Heavyweight Championship Showdown

  2. Why are we here? • Times are changing • The once powerful Java has a new challenger • Should we rethink our alliances? • Should we abandon Java? • Should we learn .NET? • Should we be afraid? • (Spoiler: Don’t panic quite yet)

  3. This presentation at a glance • Technological comparison • On the desktop • On the server • On the cell-phone and PDA • Non-technological aspects • Cost of ownership • Existing systems and partners • Open source • Summary

  4. Ringside round-up: The champion Java • Several years of established performance • Thousands of successful projects • Hundreds of industry-wide standards (JCP) • Many vendors, both vertical and horizontal • Widely accepted in academia • Strong OO model, powerful libraries, strong enterprise capabilities

  5. Ringside round-up: The challenger .NET • The next step in the evolution of Windows software • Championed by the all-powerful Microsoft • Has generated a lot of buzz in the business • Has learned from previous mistakes of Windows technology and Java? • Strong OO model, powerful libraries, strong enterprise capabilities

  6. Technological comparison • Feature rich languages and libraries

  7. For the developer • C#-language is like Java with some features added • (Events, operator overloading, enums, delegators, attributes) • And some removed: Anonymous inner classes! (but anonymous functions are coming) • Doubtful value: Enums, operator overloading, events • Very valuable: attributes

  8. Language differences • C# is the most used language on .NET • VB.NET is a close runner up • Both contain unique features

  9. Attributes • Examples • Uses • JSR 175

  10. On the desktop • .NET provides a native look and feel (but try SWT) • .NET provides an easy to use designer (but it has some flaws) • In my view, the API interface for Java is better than .NET • Vivid example: JTree versus TreeView

  11. Autodeployed clients • Java Web Start versus .NET ”autodeployment” • My experience with both is good • Introduces security issues • Some minor differences: • .NET does not show splash-screen: User often accidentially starts multiple copies • .NET code access security is not 100% good yet

  12. Web-based clients

  13. On the server • Issues: • Data access: Entity Beans versus ADO.NET • Web Access: Servlets/JSPs versus ASP.NET • Transactions: Session Beans versus COM+ Components • Scalability, manageability etc.

  14. On the cell-phone and PDA • Browser-based • Java: No special support • .NET: Microsoft Mobile Internet Toolkit • Client-based • Java: J2ME – MIDP is available, but not very powerful • .NET: .NET CF: Mostly available on PDAs (Pocket PC), but very powerful compared to MIDP

  15. Portability • If you need to run on different platforms, don’t do .NET • If you want to program in several languages, don’t use Java • (Unless you know what you’re doing) • (Why would you want several languages, anyway?)

  16. Performance benchmarks • Basically worthless • Usually test a limited subset of platforms: • E.g. Benchmark showing Java 10s of times faster than C# turned out to test only the difference in processing of Regular Expressions

  17. Non-technical aspects

  18. Cost of ownership • .NET: No runtime costs, acceptable development costs • Java development costs: Free (NetBeans, Eclipse) to very expensive (OptimalJ, TogetherJ) • Commercial EJB servers: Very high costs • Open-source EJB servers: JOnAs and JBoss • Open-source servlet containers: Tomcat

  19. Existing infrastructure • Single most important factor: • What are your current systems running on? • and your customers’? • Integration is always expensive • Using C, C++, Win32, COM etc from .NET is unbelievably easy • JNI is a drag • Web Services resolve some of these issues

  20. Committed industries • Telecom: Java • Banking: Java • Process industry and automation: Microsoft • End user shrink wrap: Microsoft

  21. Open source • Why is open-source important? • Cost • But mainly bureaucratic • Safely • Quality • Java has attracted open-source developers, Microsoft has not (at least not until now) • Google: “java open-source”: 1,240,000 • Google: “c# open-source”: 111,000 • But Windows historically bigger in commercial components

  22. Philosophical issues: Open or closed world? • .NET is standards (EMEA) based, but it is a standard “delivered from the Gods” (i.e. Bill) • Java is now under the control of the JCP. Control is not in Sun’s hands • Better marked acceptances

  23. People issues • If you are a manager: Unhappy programmers are less productive • Technological change must be accepted by those implementing it • A programmer from one world can learn the technology of the other very quickly, but... • ... learning how to use a tool effectively is very time-consuming

  24. The future • Both technologies in rapid change • .NET 1.1 was just released, Everett is expected this year (adds anonymous functions!) • Java 1.5 (Tiger) will be very exciting. Hope it lives up to its nickname • Includes among others JSRs 166 (Doug Lea’s concurrency tools), JSR 175 (Metadata), JSR 201 (enum, foreach, autoimport)

  25. Conclusion • Sticking with what you know is not a bad choice • .NET has a small advantage – but the technologies will continue to leapfrog past each other • Changing your existing infrastructure is expensive • The availability of open source projects for Java is invaluable

  26. Overview • Målgruppe: Programmerer, arkitekter og teknisk prosjektledere • Formål: Få grunnlag for å vurdere fremtidig teknologivalg. Få en introduksjon til .NET (se hvordan teknologi i .NET svarer til sine "stesøsken" i Java). Få mulighet til å se gjennom "hypen". • Forkunnskap: Generell kjenskap til J2SE, J2ME og J2EE plattformene. Kunnskap til applikasjonsarkitekturer: To, tre- og fire-lag (web basert), mobil • Konklusjon: Teknisk sett er dette to moderne, kraftige plattformer. Det er vanskelig å argumentere saklig for den ene forran den andre på generelt teknisk grunnlag. Mange bedrifter har imidlertid kunnskap, partnere og andre faktorer som veier tungt. • En oversikt over tema • Teknisk grunnlag for teknologivalg: • * Rene språkforskjeller (attributes, enums, events, overloading, boxing, native calls) • - hva betyr det for kompleksitet og hva får man tilbake? (C# har flere features enn Java, men hvilke er verdifulle?) • - hvordan kommer dette til å endre seg (særlig JSR 175 og 201) • - Forkskjeller i bruk av "foreign function calls" (dessverre: .NET vinner, hands down) • * På mobile klienter • - Tekniske krav (oppsummering: MIDP når et bredere publikum) • - Muligheter (oppsummering: .NET Compact Framework har rikere features) • - Konklusjon: Java for massemarket, .NET for vertikale applikasjoner med høye krav • * På tykke klienter • - Brukergrensesnitt (konklusjon: .NET er mer native, men SWT er et skritt i riktig retning) • - API (konklusjon: MVC-designet i Java vinner over .NET) • - Uerfarene programmere (konklusjon: .NET Windows Forms Designer er verdifull, selv om den har barnesykdommer) • - Dynamisk deployment: Java Web Start og .NET autodeployment (JWS er mer modent, begge fungerer bra) • * På tynne klienter • - ASP.NET er grunnleggende et veldig godt sett med Taglibs • - Verktøy som Struts, Jakarta Velocity og Jakarta Taglibs gjør servlets fullgode • - Men Java krever mer kunnskap for å få til å virke • * På server-siden • - Web-Services (konklusjon: .NET har innebygget støtte på klient og server, noe som funker veldig bra) • - Data-aksess (konklusjon: ADO.NET er bedre for applikasjoner med lite behov for OO-behandling av data. Entity beans er veldig tungvekt) • - Transaksjonsmonitor (COM+ og EJB: EJB er mer kompleks) • - Begge platformene har god skalerbarhet, men Java har lange erfaringstall å vise til • - Benchmarks er i stor grad verdiløse - med nok optimalisering kan man oppnå nesten vilkårlige tall • * Andre tekniske betraktninger: • - .NET fungere bare på Windows (men open-source prosjekter porter til andre platformer) • - Java platformen støtter bare Java programmeringsspråk (men open-source og andre prosjekter støtter andre språk. Dessuten: Hvor mye er dette egentlig verd?) • * Overall: • - .NET er lettere for uerfarene programmere på nesten all områder • - Java er kraftigere på noen områder, mer modent (.NET har beholdt noe av Win32/COMs feature med mystisk krasj) • - Java krever mer erfaring - spesielt for å kjenne de riktige Open-Source verktøyene • - .NET er steget forran med features, men Java vil kopiere de mest verdifulle • - Begge valgene er gode fra et teknisk perspektiv i nesten alle situasjoner • Andre faktorer: • * Eksisterende teknologi: • - En bedrift har et ofte brukt Windows eller Unix for servere i mange år • - Samarbeidspartnere, konkurrenter og bransje generelt er veldig knyttet til et område (for eksempel: Bank skyr ofte Windows, Industri har brukt f. eks. OPC i mange år) • - Det kan være lurt å holde seg til den verdenen man kjenner • - Det kan være lurt å holde seg til en platform for interoperabilitet, drift og opplæring • * Pris: • - .NET server mye billigere enn en typisk BEA, WebLogic eller 9i AS installasjon • - MEN: JBoss, JOnAs er open-source, og gode alternativer ved etablering av et prosjekt • * Tredjepartskomponentstøtte • - .NET har flere komponentselgere • - Java har mye mer open-source aktivitet • - Open-source har mye lavere TCO enn tredjepart, pga redusert byråkrati (min erfaring) • - Tredjepart har skjelden bedre kvalitet • * Myke faktorer: • - God erfaring og gode kontakter med en "verden" teller mer enn vi teknikkere ofte anerkjenner • - Lærekurven ved å bytte teknologi er alltid brattere enn man tror, selv for dyktige programmerer • - Min gut-feeling: .NET hjelper deg å komme i gang, Java hjelper deg å avslutte • Konklusjon: • * Hva er ikke gode beslutningsgrunner: • - Generell sammenligning av "features" • - Publiserte "benchmarks" • * Hva er gode beslutningsgrunner • - Spesifikke teknologikrav: Spesielt på mobil • - Hensyn til eksisterende driftsmiljø og kompetanse • - Hensyn til bedriften og bransjens tradisjonelle samarbeidspartnere

More Related