Java versus .NET

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

description

Java versus .NET. The Heavyweight Championship Showdown Johannes Brodwall - Systek AS. 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 - PowerPoint PPT Presentation

Transcript of Java versus .NET

Page 1: Java versus .NET

Copyright © 2003 Systek AS [email protected]

Java versus .NET

The Heavyweight Championship Showdown

Johannes Brodwall - Systek AS

Johannes Brodwall
Har vi en kurspartner?Jeg vil kunne si: Snakk med meg i pausen, så kan jeg forklare eller anbefalle et kurs
Page 2: Java versus .NET

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)

Page 3: Java versus .NET

Copyright © 2003 Systek AS [email protected]

Innhold

• Teknologisk sammenligning• Feature sammenligning• Service-level faktorer

• Ikke-tekniske faktorer• Oppsummering – hva skal vi velge?

Page 4: Java versus .NET

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

Page 5: Java versus .NET

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

Page 6: Java versus .NET

Copyright © 2003 Systek AS [email protected]

Tekniske temaer

• Benchmarking• Programmeringsspråk• Arkitektur

• Desktop• Mobil• Server

• Service-level aspekter• Integrasjon• Portabilitet• Sikkerhet

1. Runde

Page 7: Java versus .NET

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

Page 8: Java versus .NET

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

Page 9: Java versus .NET

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

Page 10: Java versus .NET

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.”;

Page 11: Java versus .NET

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”);

}}

Page 12: Java versus .NET

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”);

}}

Page 13: Java versus .NET

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() {}}

Page 14: Java versus .NET

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

Page 15: Java versus .NET

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.

Page 16: Java versus .NET

Copyright © 2003 Systek AS [email protected]

N-lags arkitektur

Database

Server

Web-server

Applikasjonsserver

Web Browser

Rike klienter

WAP

Rik klient

Page 17: Java versus .NET

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.

Page 18: Java versus .NET

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

Page 19: Java versus .NET

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

Page 20: Java versus .NET

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

Page 21: Java versus .NET

Copyright © 2003 Systek AS [email protected]

Windows Forms Designer

Page 22: Java versus .NET

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

Page 23: Java versus .NET

Copyright © 2003 Systek AS [email protected]

Noen MIDP-telefoner

Page 24: Java versus .NET

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

Page 25: Java versus .NET

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

Page 26: Java versus .NET

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

Page 27: Java versus .NET

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!

Page 28: Java versus .NET

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

Page 29: Java versus .NET

Copyright © 2003 Systek AS [email protected]

Service-level temaer

• Integrasjon

• Portabilitet

• Sikkerhet

• Sytepause

Page 30: Java versus .NET

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

Page 31: Java versus .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

Page 32: Java versus .NET

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.

Page 33: Java versus .NET

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?!?

Page 34: Java versus .NET

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?

Page 35: Java versus .NET

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

Page 36: Java versus .NET

Copyright © 2003 Systek AS [email protected]

Hva er dyrest?

Kommersiell Java

Kommersiell .NET

Open-source .NET

Open-source Java

Page 37: Java versus .NET

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)

Page 38: Java versus .NET

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!

Page 39: Java versus .NET

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

Page 40: Java versus .NET

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

Page 41: Java versus .NET

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

Page 42: Java versus .NET

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

Page 43: Java versus .NET

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?

Page 44: Java versus .NET

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?

Page 45: Java versus .NET

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

Page 46: Java versus .NET

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

Page 47: Java versus .NET

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

Page 48: Java versus .NET

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

Page 49: Java versus .NET

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!

Page 50: Java versus .NET

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

Page 51: Java versus .NET

Copyright © 2003 Systek AS [email protected]

Så: Hvilken plattform er best?

Så: Hvilken plattform er best?