Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Copyright © 2003 Systek Java versus.NET The Heavyweight Championship Showdown Johannes Brodwall - Systek AS.

Liknende presentasjoner


Presentasjon om: "Copyright © 2003 Systek Java versus.NET The Heavyweight Championship Showdown Johannes Brodwall - Systek AS."— Utskrift av presentasjonen:

1 Copyright © 2003 Systek ASbrodwall@systek.no Java versus.NET The Heavyweight Championship Showdown Johannes Brodwall - Systek AS

2 Copyright © 2003 Systek ASbrodwall@systek.no Bakgrunn Mange spør seg om det er på tide å bytte teknologi Fra Java til.NET Teknologiene er omfattende – mer enn programmeringsspråk Jeg har erfaring fra både Java og.NET prosjekter Følgende er mine erfaringer (subjektive, personlige, men virkelige)

3 Copyright © 2003 Systek ASbrodwall@systek.no Innhold Teknologisk sammenligning Feature sammenligning Service-level faktorer Ikke-tekniske faktorer Oppsummering – hva skal vi velge?

4 Copyright © 2003 Systek ASbrodwall@systek.no I det blå hjørnet: Utfordreren.NET™ Arvtageren til tungvektere som COM, MTS, ASP! Fra laboratoriene til den mektigste software organisasjonen i verden Har vekket enorm interesse Har utfordreren lært fra sine forgjengeres mangler? Objektorientert modell Kraftige biblioteker Designet for enterpriseapplikasjoner

5 Copyright © 2003 Systek ASbrodwall@systek.no I det røde hjørnet: Regjerende mester Java Årevis med etablert robusthet Tusenvis med vellykkede prosjekter Hundrevis med industristandarder Bred industristøtte fra mange aktører Det mest populære valget i akademiske miljøer Objektorientert modell Kraftige biblioteker Bygget for enterpriseapplikasjoner

6 Copyright © 2003 Systek ASbrodwall@systek.no Tekniske temaer Benchmarking Programmeringsspråk Arkitektur Desktop Mobil Server Service-level aspekter Integrasjon Portabilitet Sikkerhet 1. Runde

7 Copyright © 2003 Systek ASbrodwall@systek.no Status Java og Windows har hoppet bukk over hverandre gjennom hele 90-tallet Eks: Java RMI – DCOM -.NET Remoting ASP – JSP MTS – EJB.NET er Microsoft’s neste hopp – og det er et langt ett! Java ligger nå litt etter, men mye av forspranget blir tatt igjen ved Java 1.5 (Tiger) – 2004Q2

8 Copyright © 2003 Systek ASbrodwall@systek.no Benchmarks Finnes mange benchmarks der ute Mest kjente er Java Pet Store versus.NET Pet Store Benchmarks er FUD! De fleste benchmarks: Tester kun et fåtall faktorer, og Kan forbedres vilkårlig med innsats Forårsaker lange debatter som riktigheten av målingene

9 Copyright © 2003 Systek ASbrodwall@systek.no Språkmessige forskjeller Mest aktuelt å sammenligne C# og Java C# har i tillegg til Java: Struct og enum-typer Events, delegators, properties Operator overloading (fjernet med vilje fra Java) Attributter (åpner for mye god magi) Autoboxing Størst savn fra Java: Anonymous inner classes

10 Copyright © 2003 Systek ASbrodwall@systek.no Språkforskjeller: Properties Tilsvarer Java’s getter og setter konvensjon Men er bygget inn i språket public class MyClass { public string Name { get { return (string)properties[”Name”]; } set { properties[”Name”] = value; } } private Hashtable properties = new Hashtable(); } MyClass obj; obj.Name += ”, Esq.”;

11 Copyright © 2003 Systek ASbrodwall@systek.no Språkforskjeller: Events Tilsvarer Java’s observer konvensjon Men er bygget inn i språket public delegate MyEventHandler(object sender, EventArgs e); public class MyClass { public event MyEventHandler MyEvent; public void FireEvent() { if ( MyEvent != null ) MyEvent(this, new EventArgs()); } public static void Main() { MyClass myObj = new MyClass(); myObj.MyEvent += new MyEventHandler(MyEventHandlerImpl); myObj.FireEvent(); } private static void MyEventHandlerImpl(object sender, EventArgs e) { Console.WriteLine(”In event handler”); }

12 Copyright © 2003 Systek ASbrodwall@systek.no Språkforskjeller: Events Tilsvarer Java’s observer konvensjon Men er bygget inn i språket public class MyClass extends Observable { public void fireEvent() { notifyObservers(); } public static void Main() { MyClass myObj = new MyClass(); myObj.addObserver(new Observer() { public void update(Observable sender, Object arg) { MyEventHandlerImpl(sender, arg); } }); myObj.fireEvent(); } private static void MyEventHandlerImpl(object sender, object e) { System.out.printLn(”In event handler”); }

13 Copyright © 2003 Systek ASbrodwall@systek.no Språkforskjeller: Attributter Tilsvarer deployment descriptor info Men er bygget inn i språket Dekorerer reflection-information med ”metadata” Forutsetter at et ”mellomlag” behandler attributter Vi brukte dette til å implementere autorisasjon i web services [Transaction(TransactionOption.Required)] public class Account : ServicedComponent { [AutoComplete] static void Main() {} }

14 Copyright © 2003 Systek ASbrodwall@systek.no Språkforskjeller – vurdering Mye nytt i C# er bra, spesielt Autoboxing Events, Properties Attributter C# er mer kompleks – det var derfor mange forlot C++. Det viktigste kommer i Java 1.5 (Tiger) – men antageligvis ikke events eller operator overloading Både neste versjon av C# og Java 1.5 kommer til å ha generics Motstanderne sirkler rundt hverandre, og begge får inn noen slag, men det er bare oppvarming

15 Copyright © 2003 Systek ASbrodwall@systek.no Rammeverkene Introduksjon til n-lags arkitektur De forskjellige lagene i Java De forskjellige lagene i.NET Sammenligning, lag for lag.

16 Copyright © 2003 Systek ASbrodwall@systek.no N-lags arkitektur Database Server Web- server Applikasjons server Web Browser Rike klienter WAP Rik klient

17 Copyright © 2003 Systek ASbrodwall@systek.no Presentation Enterprise Arkitektur Client Logic Resource Integration Forbereder data for visning i klient. Web-server. Slåes ofte sammen med klient- lag Forbereder data for visning i klient. Web-server. Slåes ofte sammen med klient- lag Interaksjon mellom bruker og fysisk system. Web- browser, windows- klient, mobiltelefon Interaksjon mellom bruker og fysisk system. Web- browser, windows- klient, mobiltelefon Forretningslog ikk. Plassering av logiske regler og transaksjoner Forretningslog ikk. Plassering av logiske regler og transaksjoner Database, meldingskø, mainframe Typisk utenfor systemets ansvar Database, meldingskø, mainframe Typisk utenfor systemets ansvar Håndtere kommunikasjo n mot andre systemer. Inkluderer kommunikasjo n mot databaser, mainframes, meldingskøer etc. Håndtere kommunikasjo n mot andre systemer. Inkluderer kommunikasjo n mot databaser, mainframes, meldingskøer etc.

18 Copyright © 2003 Systek ASbrodwall@systek.no Presentation Java på én slide! Client Logic Resource Integration Servlets/JSP Web browser Database JDBC Swing/AWT Enterprise Java Beans: Stateless session beans Stateful session beans Entity beans Enterprise Java Beans: Stateless session beans Stateful session beans Entity beans Other systems Web Services client Java 2 Micro Edition MIDP Java 2 Micro Edition MIDP WAP telefon Message Queue JMS Mainframe etc JCA Java Web Start

19 Copyright © 2003 Systek ASbrodwall@systek.no Presentation.NET på én slide! Client Logic Resource Integration ASP.NET Web Forms Internet explorer ASP.NET Web Services Database ADO.NET Mobile Internet Toolkit Windows Forms COM+ Enterprise Components Web Services Other systems Web Services client.NET Compact Framework WAP telefon Message Queue MSMQ Autodeployment

20 Copyright © 2003 Systek ASbrodwall@systek.no Desktop klienter.NET har native ”look and feel” VS.NET gir en grei visuell designer Javas API’er er overlegne Eks: JTree versus TreeView Savner noen klasser i.NET

21 Copyright © 2003 Systek ASbrodwall@systek.no Windows Forms Designer

22 Copyright © 2003 Systek ASbrodwall@systek.no Mobile klienter Browser-basert: Java: Gir ingen ekstra støtte.NET: Mobile Internet Toolkit = hetrogene klienter Rike klienter: Java: MIDP (J2ME) tilgjengelig på mange telefoner Ikke veldig kraftig.NET Compact Framework: Mye mindre utbredt Mye kraftigere

23 Copyright © 2003 Systek ASbrodwall@systek.no Noen MIDP-telefoner

24 Copyright © 2003 Systek ASbrodwall@systek.no ASP.NET versus Servlets Rammeverk for presentasjon av web sider ASP.NET: Visuelt design Introduserer ”event-drevet” web-programmering Basert på ”taglibs” Bruker runtime tremodell av HTML dokument ASP.NET starter der JSP slutter

25 Copyright © 2003 Systek ASbrodwall@systek.no ASP.NET modellen

26 Copyright © 2003 Systek ASbrodwall@systek.no Server-basert Transaksjoner: Session Beans versus COM+ Components Begge platformene: Skalerer Gir støtte for sikkerhet Gir transaksjonsstøtte Java har demonstrert skalerbarhet i en årrekke.NET krever mindre kode for å gjøre det samme

27 Copyright © 2003 Systek ASbrodwall@systek.no Integrasjon Data-aksess: Java Entity-beans har ikke så bra track-record ADO.NET har en enklere modell som fungerer bra Legacy integrasjon: JCA åpner Meldingsutveksling: MSMQ og JMS Web-services:.NET har så god støtte at det er det letteste å bygge infrastruktur med!

28 Copyright © 2003 Systek ASbrodwall@systek.no Alternativer til J2EE og.NET N-lags for tungt for mange, passer ikke for alle Java: Open-source rammeverk som Turbine, Prevayler, Hibernate, Struts, XMLC og Naked Objects Å utvikle sin egen plattform Amazon – Java basert (obedos) Google – Linux-basert supercluster OO-script-språk: Python, Ruby LAMP

29 Copyright © 2003 Systek ASbrodwall@systek.no Service-level temaer Integrasjon Portabilitet Sikkerhet Sytepause

30 Copyright © 2003 Systek ASbrodwall@systek.no Integrasjon.NET integrerer veldig bra med native windows C++/C og COM kode (”IJW”-teknologi) Slår knockout på JNI.NET har veldig bra Web Services støtte Java har initiativer for å støtte integrasjon med mainframes, CORBA etc (JCA) Fungerer bra med verktøy Migrering fra C/C++ eller COM til.NET

31 Copyright © 2003 Systek ASbrodwall@systek.no Portabilitet.NET støtter flere programmeringsspråk Kun én type språk støttet bra F# kan endre dette Java støtter flere plattformer Blant annet embeddede plattformer Unntak: Mono, Rotor Andre språk for JVM (Jython) Men: Bør ikke satse prosjektet på disse

32 Copyright © 2003 Systek ASbrodwall@systek.no Sikkerhet Java har hatt en sikkerhetsmodell siden 1.1 Microsoft har hatt dårlig rykte på sikkerhet Begge tar nå sikkerhet alvorlig: Microsoft: “Secure Windows Initiative” Eks. Oracle: “Can’t break it, can’t break in” Begge støtter: SSL, RSA, HTTPS, Kodesikkerhet, Rollebasert sikkerhet, etc. etc.

33 Copyright © 2003 Systek ASbrodwall@systek.no Syting!.NET kommer ikke med bibliotek for komprimering! Jeg har fortsatt ikke funnet et godt taglib for Java- utvikling Hvorfor krever alle Java-IDE’er 1 GB RAM?!? EJBQL!?!?!?.NET har ikke anonymous inner classes! Whassup with that?!?

34 Copyright © 2003 Systek ASbrodwall@systek.no Oppsummering: Teknisk del Begge platformene tilbyr det man trenger for enterprise utvikling Små tekniske forskjeller.NET et lite forsprang, ettersom det er nyest Java er mer modent Viktige forskjeller inkluderer Portabilitet Tekniske spørsmål?

35 Copyright © 2003 Systek ASbrodwall@systek.no Ikke-tekniske aspekter Cost of ownership Utviklingskostnader Runtimekostnader Opplæringskostnader Filosofisk betraktning: Åpen eller lukket verden? Modenhet 2. Runde

36 Copyright © 2003 Systek ASbrodwall@systek.no Hva er dyrest? Kommersiell Java Kommersiell.NET Open-source.NET Open-source Java

37 Copyright © 2003 Systek ASbrodwall@systek.no Software-valg KommersiellOpen-source Java utvikling Mange, dyreste er OptimalJ, Together (30- 70’/utvikler) Eclipse, NetBeans (begge veldig bra) J2EE runtime Opptil flere 100’ per CPU JOnAs, JBoss, Tomcat, Jetty (modene).NET utvikling Visual Studio.NET (cirka 5’-25’/utvikler) Borland C#Buider ISharp (ikke spesielt bra).NET runtime Inkludert i OSROTOR, Mono (ikke modent)

38 Copyright © 2003 Systek ASbrodwall@systek.no Opplæringskostnader Å bytte platform er alltid dyrt Å lære teknologien er rimelig greit Men å lære å bruke den riktig er tidkrevende Selv med gode utviklere tar det måneder Noen som har gått opp stien kan hjelpe Deltagerne må være motivert til å bytte Menneskelige faktorer er viktige!

39 Copyright © 2003 Systek ASbrodwall@systek.no Produktivitet J2EE er en mer kompleks arkitektur enn.NET Flere features og muligheter Men: Kan være tung å kode mot Skal du bruke J2EE: ha en strategi for kodegenerering Øker produktivitet Fremhever konsistens Forebygger feil

40 Copyright © 2003 Systek ASbrodwall@systek.no Java’s filosofi Ikke formelt “standardisert”, Utviklet gjennom et industrisamarbeid (JCP) JCP standarder, ”uavhengige” parter leverer verktøy Andre leverandører har mye innflytelse Java kontrolleres av IBM, BEA og Oracle mer enn Sun J2ME satsningen styres av Nokia, Motorola, Samsung, Ericsson, og så videre

41 Copyright © 2003 Systek ASbrodwall@systek.no Microsofts filosofi Utviklet ene og alene av Microsoft Overgitt til EMEA Produserer standarder + ferdige verktøy.NET vil alltid være dominert av Microsoft. Jeg liker å kalle denne filosofien Steintavler-til- Moses-standardisering

42 Copyright © 2003 Systek ASbrodwall@systek.no Filosofi og oss Er Microsoft eller Javas innstilling er mest åpen? Hva betyr det for oss? Java: Må forholde oss til flere leverandører Java: Verktøy kan komme sent, eller aldri Microsoft: Kommer Nokia til å levere.NET på sine mobiler? (Neppe) Microsoft: Mangel på konkurranse svekker tilbudet Java: Stimulerer til Open-Source utvikling

43 Copyright © 2003 Systek ASbrodwall@systek.no Open-source Java Java har stimulert til mye mer Open-Source utvikling og forskning enn.NET (så langt) Hvorfor er open-source interessant Pris? (ikke så viktig) Vendor lock-in Redusert byråkrati ved innkjøp Kvalitet Eksempelkode Er dette viktig for dere?

44 Copyright © 2003 Systek ASbrodwall@systek.no Din eksisterende plattform Selv med Web Services er integrasjon veldig dyrt Det viktigste spørsmålet: Hva bruker kunder? Hva bruker leverandører? Hva bruker partnere? Hva bruker din bransje? Hva benyttes i eksisterende systemer? Hva forstår utviklingsorganisasjonen?

45 Copyright © 2003 Systek ASbrodwall@systek.no Utbredelse & Modenhet Diskutabelt hvem som er mest skalerbar Men: J2EE har mange installasjoner som har gått over lang tid! Trygghetsfølelse Body-of-knowledge Modne best practices Erfaren arbeidskraft

46 Copyright © 2003 Systek ASbrodwall@systek.no Oppsummering Java har bredest spektrum av leverandører Kommersielle Java-løsninger er dyrest Teknologibytte er alltid dyrt Java har en åpen prosess Microsoft er ”kongen på haugen sin” Java har mange modne open-source initiativer Java drar nytte av sin lengre fartstid

47 Copyright © 2003 Systek ASbrodwall@systek.no Konklusjon: Når bør man bruke.NET Dersom man er i “Windows-verden” Win32, COM etc erfaring Dersom partnere benytter.NET Dersom man er opptatt av fancy brukergrensesnitt Dersom man trenger kraftige bærbare devices Dersom man føler J2EE er for kompleks

48 Copyright © 2003 Systek ASbrodwall@systek.no Når bør man bruke Java? Dersom man allerede er i Java-verden Opptatt av standardisering og av open-source Partnere, leverandører eller kunder benytter Java Eksistrende systemer benytter Java Man har veldig dyktige Java-utviklerer Mobile massemarkedapplikasjoner

49 Copyright © 2003 Systek ASbrodwall@systek.no Fremtiden Både Java og.NET har strålende framtid Neste generasjon.NET (Yukon) presenteres på PDC 2003 i oktober J2SE 1.5 (Tiger) forventes 2004Q2 Henter inn forspranget til C# Konkurransen mellom Java og.NET er bra for oss!

50 Copyright © 2003 Systek ASbrodwall@systek.no Oppsummering Java og.NET vil forbli de 2 største plattformene De tekniske forskjellene er trivielle Andre faktorer bør avgjøre valget Å bytte mellom plattformene er dyrt.NET gir god integrasjon med Windows-teknologi Java tilbyr en mer åpen verden bredere bransjesamarbeid stimulering til Open-Source utvikling

51 Copyright © 2003 Systek ASbrodwall@systek.no Så: Hvilken plattform er best?


Laste ned ppt "Copyright © 2003 Systek Java versus.NET The Heavyweight Championship Showdown Johannes Brodwall - Systek AS."

Liknende presentasjoner


Annonser fra Google