Copyright © 2003 Systek AS [email protected]
Java versus .NET
The Heavyweight Championship Showdown
Johannes Brodwall - Systek AS
Copyright © 2003 Systek AS [email protected]
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)
Copyright © 2003 Systek AS [email protected]
Innhold
• Teknologisk sammenligning• Feature sammenligning• Service-level faktorer
• Ikke-tekniske faktorer• Oppsummering – hva skal vi velge?
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
Tekniske temaer
• Benchmarking• Programmeringsspråk• Arkitektur
• Desktop• Mobil• Server
• Service-level aspekter• Integrasjon• Portabilitet• Sikkerhet
1. Runde
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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.”;
Copyright © 2003 Systek AS [email protected]
Språkforskjeller: Events
• Tilsvarer Java’s observer konvensjon• Men er bygget inn i språketpublic 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”);
}}
Copyright © 2003 Systek AS [email protected]
Språkforskjeller: Events
• Tilsvarer Java’s observer konvensjon• Men er bygget inn i språketpublic 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”);
}}
Copyright © 2003 Systek AS [email protected]
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() {}}
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
Rammeverkene
• Introduksjon til n-lags arkitektur• De forskjellige lagene i Java• De forskjellige lagene i .NET• Sammenligning, lag for lag.
Copyright © 2003 Systek AS [email protected]
N-lags arkitektur
Database
Server
Web-server
Applikasjonsserver
Web Browser
Rike klienter
WAP
Rik klient
Copyright © 2003 Systek AS [email protected]
PresentationPresentation
Enterprise ArkitekturClientClient LogicLogic ResourceResourceIntegrationIntegration
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
Forretningslogikk.
Plassering av logiske regler og transaksjoner
Forretningslogikk.
Plassering av logiske regler og transaksjoner
Database, meldingskø, mainframe
Typisk utenfor systemets ansvar
Database, meldingskø, mainframe
Typisk utenfor systemets ansvar
Håndtere kommunikasjon mot andre systemer.
Inkluderer kommunikasjon mot databaser, mainframes, meldingskøer etc.
Håndtere kommunikasjon mot andre systemer.
Inkluderer kommunikasjon mot databaser, mainframes, meldingskøer etc.
Copyright © 2003 Systek AS [email protected]
PresentationPresentationJava på én slide!
ClientClient LogicLogic ResourceResourceIntegrationIntegration
Servlets/JSPServlets/JSPWeb browser
Web browser
DatabaseDatabaseJDBCJDBC
Swing/AWTSwing/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
Other systems
Web Services client
Web Services client
Java 2 Micro Edition•MIDP
Java 2 Micro Edition•MIDP
WAP telefon
WAP telefon
Message Queue
Message Queue
JMSJMS
Mainframe etc
Mainframe etc
JCAJCA
Java Web StartJava Web Start
Copyright © 2003 Systek AS [email protected]
PresentationPresentation
.NET på én slide!ClientClient LogicLogic ResourceResourceIntegrationIntegration
ASP.NET Web Forms
ASP.NET Web Forms
Internet explorer
Internet explorer ASP.NET
Web Services
ASP.NET Web Services
DatabaseDatabaseADO.NETADO.NET
Mobile Internet Toolkit
Mobile Internet Toolkit
Windows FormsWindows Forms
COM+ Enterprise Components
COM+ Enterprise Components
Web Services
Other systems
Other systemsWeb
Services client
Web Services client
.NET Compact Framework.NET Compact Framework
WAP telefon
WAP telefon
Message Queue
Message QueueMSMQMSMQ
AutodeploymentAutodeployment
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
Windows Forms Designer
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
Noen MIDP-telefoner
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
ASP.NET modellenASP.NETframework
Bruker
Web FormWeb Browser
Go to page
HTTP GetOnPageLoad
Label.Text = “Hello World”Submit.Click += Submit_OnClick
Serialize HTML treeReturn page
Display Page
Change text field
Press submit
HTTP Post
OnPageLoad
Submit_OnClick
Label.Text = “Hi, “ + TextField.Text;
Serialize HTML treeReturn page
Display Page
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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!
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
Service-level temaer
• Integrasjon
• Portabilitet
• Sikkerhet
• Sytepause
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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.
Copyright © 2003 Systek AS [email protected]
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?!?
Copyright © 2003 Systek AS [email protected]
Oppsummering: Teknisk del
Begge platformene tilbyr det man trenger for enterprise utvikling
Små tekniske forskjeller .NET et lite forsprang, ettersom
det er nyestJava er mer modent
Viktige forskjeller inkludererPortabilitet
Tekniske spørsmål?
Copyright © 2003 Systek AS [email protected]
Ikke-tekniske aspekter
• Cost of ownership• Utviklingskostnader• Runtimekostnader• Opplæringskostnader
• Filosofisk betraktning:• Åpen eller lukket
verden?• Modenhet
2. Runde
Copyright © 2003 Systek AS [email protected]
Hva er dyrest?
Kommersiell Java
Kommersiell .NET
Open-source .NET
Open-source Java
Copyright © 2003 Systek AS [email protected]
Software-valgKommersiell Open-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 OS ROTOR, Mono (ikke modent)
Copyright © 2003 Systek AS [email protected]
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!
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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?
Copyright © 2003 Systek AS [email protected]
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?
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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
Copyright © 2003 Systek AS [email protected]
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!
Copyright © 2003 Systek AS [email protected]
Oppsummering
Java og .NET vil forbli de 2 største plattformeneDe tekniske forskjellene er trivielleAndre faktorer bør avgjøre valget
Å bytte mellom plattformene er dyrt .NET gir god integrasjon med Windows-teknologiJava tilbyr en mer åpen verden
bredere bransjesamarbeidstimulering til Open-Source utvikling
Copyright © 2003 Systek AS [email protected]
Så: Hvilken plattform er best?
Så: Hvilken plattform er best?
Top Related