Vide:
sgtpepper, vad är det som är så ballt
med JEE? Berätta lite om det, istället för att klanka ned på andra tekniker (du börjar ju låta som en Moderat
J2EE om jag får be ;)
Ok, sorry att jag låtit som en moderat, det är det sista jag vill låta som :e. Här är en kort sammanfattning av vad som är ballt med Javakonceptet:
I stället för att rabbla en massa tekniska finesser på låg nivå (eftersom det i sig inte är unikt) så kan man se på Java ur ett mer övergripande perspektiv.
Först och främst: "Write Once, Run Anywhere" och mångfald.
Låt oss tänka oss ett scenario:Ett utvecklingsteam får i uppgift att utveckla en internetbank åt en stor nordisk bank. Man bygger upp en mycket stilig lösning som körs på ett klustrat Solaris-system. Banken blir dock en så stor succe att lasten hotar att knäcka servrarna, vad gör man då? Jo, man flyttar helt enkelt hela internetbanken till en stordator från IBM eftersom det finns JVMer för ett stort antal operativ.
Man upptäcker även att applikationsservrarna inte riktigt klarade trycket så därför byter man helt enkelt ut dessa också och ersätter dom med applikationsservrar från ett annat företag, eftersom de båda följer J2EE-standarden så är det inga problem att "deploya" på en ny programvara.
Jämför detta med Microsofts singel-system. Ett operativ, en applikationsserver. Mångfald är alltid bra och i Javas fall finns det ett enormt mångfald. Jag kan skriva min applikation på min PC med Win2k och testa den i den fria programvaran Tomcat och JBoss för att sedan ta den till serverhallen och installera på en OS/390-burk som kör Websphere.
Sånt existerar inte i Microsoft-världen.
Mångfald finner man t.o.m i kompilator/VM-världen, det är inte bara SUN som utvecklar virtual machines och bytecode-kompilatorer, det gör även t.ex IBM (och jävligt framgångsrikt dessutom).
Hoppsan, höll på att glömma utvecklingsmiljöerna, även där: mångfald. Gillar du inte JBuilder? Byt då till Visual Age, gillade du inte den heller, testa VisualCafé.
Det finns ett otroligt antal ramverk och APIer för att sköta olika typer av uppgifter, redo att användas. Mycket utvecklas som OpenSource, ta t.ex Apache. Kika på http://java.apache.org och http://xml.apache.org så förstår ni vad jag menar.
Mycket av den bakomliggande arkitekturen för avancerade affärssystem är redan implementerad, Enterprise JavaBeans-containern sköter den distribuerade kommunikationen, skalbarheten, transaktionshanteringen etc. så att jag kan inrikta mig helt på affärslogiken.
Java som språk är stabilt, har en väl utvecklad struktur, är helt objektorienterat, relativt snällt mot programmeraren och väldigt flexibelt. Visst saknas en del "balla" prylar som finns i C++ som t.ex operatorsöverlagring, men de saknas även i C# just eftersom sådana saker oftast tenderar att förstöra mer än de hjälper.
M:
Java har väl multi inherritance, alltså att klasser ärver från klasser som ärver från klasser som ärver från klasser. C# använder "interfaces" istället, du kan ärva från hur många interfaces du vill.
Fel, Java tillåter endast singel inheritance och har precis som C# interfaces som ett alternativ för multi inheritance. Faktum är att C# i princip helt och hållet fungerar på samma sätt som java när det gäller klass- och interfacearv.
[redigerat]Förresten, vad menar du egentligen? Självklart kan klass A ärva från klass B som i sin tur ärvt från klass C, det kallas objektorientering!!
"Java and C# are similar not only in syntax, but in architectural language design decisions. C#'s designers arrived at many of the same conclusions about how to "fix" C++ that Java's designers had reached 5 years (or so) earlier."
(Källa)
I c# är primitiva typer objekt. Du kan overloada objekt, hela frameworken, allt!
Alla primitiva typer i Java har wrapperklasser som kan användas då man vill jobba med ett objekt snarare än en primitiv typ, men visst, C#s lösning är smidig, det håller jag med om.
Det finns inga globala variabler i c#, du måste ha en klass för att definiera en variabel.
Självklart. Samma sak gäller i Java och alla andra objektorienterade språk.
Men jag är övertgad om att Java får en ordentlig match när .net kommer ut på marknaden... och vad gäller webbprogrammering så kommer asp.net att dominera.
Där tror vi olika. Visst kan det se ut som om dotnet är hett som bara den när man kollar på detta forum, där det i princip finns tre-fyra Javakillar, men ute i verkligheten ser det helt annorlunda ut. Hela industrin andas ju Java, ta dig en titt i arbetsannonserna, Java Java Java. Av mina klasskamrater på högskolan så sysslar i princip alla med någon slags Javautveckling. Java har ett enormt övertag, i princip alla ingenjörsstudenter utbildas i Java (och för den delen även C/C++ vilket är något av allmänbildning för en duktig datakille).
C# som språk har jag absolut inget emot, det har ju så stora likheter med Java att det är en kakbit att byta och börja koda C#, det finns många fina logiska lösningar i C# så det skall bli intressant att se hur det språket artar sig, grejen är dock att Java inte bara är ett språk, det är både ett språk och ett helt ramverk.
Toonster:
Och den största begränsningen är att Java koden är inte kompilerad kod, utan kompileras och körs i realtid av VMM.
Denna VMM måste även installeras.
JVM om man skall vara petig. Visst finns det nackdelar med ett plattformsoberoende system, men det gäller främst för klientapplikationer, talar om enterpriseapplikationer så måste man vara blind för logik om man tycker att ett plattformsoberoende är en nackdel!
Jag vill understryka att jag till största delen talar om serverapplikationer, klientprogram intresserar mig icke och särskilt inte om dom är skrivna i Java, där är säkert kompilerad C# mycket bättre.
Dagens JVMer är snabba och resurseffektiva och JIT (Just-in-time compiler) är inget nytt Microsoft-påfund om du nu trodde det, finns och används redan i en teknik som börjar på J..
Ett serversystem byggt i Java har minst lika bra svarstider som vilket annat system. Bonusen är att du kan ta din applikation och flytta den från en Sun Solaris till ett IBM 390-monster utan problem om du skulle uppleva prestandabrist, gör det samma med C++-kod, du måste verkligen skoja om du menar på fullt allvar att det är lika enkelt.
Visserligen är inte koden skapad av .Net 100% kompilerad maskinkod, men allt för att köra dessa "assemblies" finns i Operativet. (läs XP, eller uppdaterad 98/Me/2000)
Exakt, i operativet. Vilket begränsar dig till Microsofts operativ. I rest my case.
Java är inte på något sätt Guds Gåva Till Folket. Då är C++ helt klart bäst,
C++ är kalas, Java är kalas. På olika saker. Java har en helt överlägsen uppbyggnad när det gäller vissa språkkonstruktioner, varför? Eftersom man tog lärdom av alla brister i C++ när man utvecklade Java.
Herman:
går .net bara köra under Win2k? När kommer nästa beta? eller när kom nuvarande beta?
Du kan bara kör .net på Windowsoperativ, vilket ganska så effektivt begränsar spridningen. Kom ihåg att fördelningen av OS ser något annorlunda ut på servermarknaden är på desktopmarknaden. Vill man måla in sig i ett hörn och begränsa sitt yrkesverksamma liv till att sitta och pilla i Windowsmiljö så är det ju ett alternativ förstås.
Hur som helst, den som lever får se vilken teknik som segrar (om det nu blir en segrare). Kom dock ihåg att Java leder med 5 år och har ett massivt stöd från industrin och högskolevärlden, sånt suddar man inte ut med lite fräcka messaging-funktioner och enkla metoder för att bygga html-tabeller i första hand...
För att elda på lite, läs denna artikel :e : http://joel.editthispage.com/stories/storyReader$133
------------------
skaparen av allt som är mjukt och luktar lavendel
[Redigerat av sgtpepper den 15 maj 2001]