Maar toen OS X uitkwam werd Java wel degelijk door Apple gemarket als 'first class citizen': Apple ging de Java VM bouwen, en het idee was bij veel devs dat Java net zo'n rol zou krijgen als .NET op Windows:
Dat was bij de introductie van OS X nog mee-varende op de gedachte dat Java een zeer belangrijke rol op de desktop zou gaan spelen. Alle desktop Java apps die er toen zogenaamd zouden gaan komen, zouden dan meteen op OS X kunnen draaien.
Zo'n rol als .NET op Windows klopt trouwens niet helemaal. Toen OS X uitkwam waren er net beta versie van .NET. Pas een goed jaar later kwam .NET 1.0 (wat qua desktop apps ook niet echt een instant hit was, daar mensen nog een flinke poos MFC/C++ of Win32/c bleven gebruiken).
Om verschillende redenen echter zijn die desktop Java apps er eigenlijk nooit echt gekomen. De plannen waren er wel degelijk. Legendarisch is natuurlijk de Java versie van Wordperfect:
http://drdobbs.com/java/184415588 , maar zoals we nu weten is dat nooit een success geworden. Java was destijds te traag, en de GUI tool-kit had te veel quirks op diverse platforms. Ik kan me goed herinneren dat ik grafische Java 1.1 aps (AWT) toch flink moest tweaken om op al onze test platforms goed te werken (OS 9, OS X, Windows 95, Windows 2000 en Solaris something).
(aan de andere kant, voor de grap start ik nog wel eens een een oude Java 1.1 app die ik toen gemaakt had op, en op de nieuwste hardware, OS en JVM draait het nog helemaal correct. Dit kan ik helaas niet van al mijn Windows/MFC apps van destijds zeggen)Maar in de loop der tijd werd wel duidelijk dat Apple maar weinig aandacht besteedde aan hun Java VM
Dit omdat de gigantische desktop apps markt die Apple en anderen ooit voorzagen er nooit gekomen is. Met stipt de grootste gebruikers van Java op OS X zijn developers die er Eclipse of Netbeans mee draaien en er serverside Java EE applicaties mee ontwikkelen.
Dit is een markt waar Apple geen behoefte aan heeft om actief te ondersteunen. Het enige puntje van belang dat ze hebben in Java is dat handjevol Java apps die wel door consumenten gebruikt worden en het feit dat developers relatief gezien vrij zeldzaam blijven en dat bijna elk platform die graag wil binnenhalen. Java developers op OS X gaan gemiddeld gezien natuurlijk vaker spontaan een Cocoa/Obj-c app ontwikkelen dan Java developers die op Windows zitten.
Hoe meer en rijkere API's Cocoa krijgt, hoe meer het op Java en .NET begint te lijken.
Klopt, het is grotendeels nu steeds meer aan het worden wat Java initieel heeft ingezet, maar het Java desktop schip heeft de haven amper verlaten, terwijl het Cocoa schip nu met volle zeilen midden op de oceaan vaart. Dat is dus nogmaals wat ik bedoel met dat Cocoa niet in Java's vaarwater zit. Hooguit kun je zeggen dat het in Java's "beoogde" vaarwater zit.
Waar ligt dan de toekomst van Java?
Sowieso nog steeds de serverside. Daar is het al heer en meester en ik zie dat alleen maar meer worden i.p.v. minder. Zoals gezegd, Facebook en Twitter die steeds meer Java gaan gebruiken en in NL b.v. iets als marktplaats dat op Java overgaat. Er is ook enorm veel ontwikkeling in deze sector voor Java. Kijk alleen eens naar wat Java EE 6 voor nieuwe dingen heeft, wat er op stapel staat voor Java EE 7, wat voor concurrentie er is (Spring 3.x, Wicket, GWT) en dan nog eens het hele NOSQL, document store, key/value store verhaal dat ook huge is op Java.
Daarnaast heb je nog een markt waar Java een beetje een verstopt succes is, en dat is in de embedded sector in de vorm van BD-J (wat helaas wel een beetje obscure, antieke JVM is, maar toch).
Of Java nog terug kan komen met Applets en op de desktop valt te bezien.
JavaFX 2.0 is in ieder geval een enorme stap in die richting en vanwege de vele kritieken op Flash ligt er op de RIA markt heel misschien weer een kansje voor Java. Vanaf JDK6u10 is er op dat vlak veel verbeterd en dingen die bij de oude Applets voor veel problemen zorgde (grote JVM download, wazige updater die tien-tallen verschillende versies op je systeem zette, trage opstart) zijn nu veel beter geregeld.
[Reactie gewijzigd door flowerp op zaterdag 9 juli 2011 16:43]
Waar ligt dan de toekomst van Java?
Sowieso nog steeds de serverside.
Klopt, maar dat betekent steeds vaker dus alleen maar GNU/Linux. Op Windows servers (en dat zijn er ook veel) is .NET een veel logischer keus. Wie nu met C#/.NET ontwikkelt zal niet over gaan naar Java: de .NET trein gaat veel sneller, is ook mega in de enterprise markt, en heeft veel minder de (overal hier genoemde) versie-hell te maken. Java komt steeds meer in een server ghetto terecht, en dat is niet waarom mensen ooit zo optimistisch over de toekomst van Java waren:
- tien jaar geleden waren Java applets
de manier om RIA's te maken. Die markt is, zo kunnen we wel concluderen, verloren aan Silverlight, Flash en, vooruit, HTML5.
- de markt voor desktop apps is ook al verloren, doordat de twee grote desktop platforms Windows en OS X met Cocoa en .NET veel sneller doorontwikkelen. De meeste Linux desktop software wordt niet in Java gedaan: echte kerels hacken de boel native aan elkaar, en niemand krijgt al die onafhankelijke neuzen in 1 (Java) richting. Google heeft het niet eens geprobeerd.
- de markt voor J2ME mobile apps is met de opkomst van smartphones ook weg. Hun laatste moderne mobile platform (Blackberry OS) stapt met BBOS 8 over op Adobe's Air framework.
- Android heeft dankbaar alle werk van Sun gratis opgepikt en zijn eigen fork begonnen met Dalvik, en kijkt niet meer om. Oracle probeert er via de rechtbank achteraf nog wat geld uit te slepen, maar het is duidelijk dat Google geen cent voor Java wil betalen. Bovendien, echte kerels (daar zijn ze weer) coden Android native.
Het is jammer wat er met Java is gebeurd want het is een prachtig platform. Sun heeft de boel laten versloffen: geldgebrek. Dat gebeurt er als je alles gratis weggeeft. Of Oracle te laat is, ik weet het niet. Hun focus is duidelijk serverside, dus ik ben bang dat Java inderdaad de komende jaren alleen achter de schermen op servers een toekomst heeft. Dat is gevaarlijk, want je moet wel een kritische massa aan nieuwe devs blijven trekken. Apple heeft met Cocoa/Obj-C goud in handen: iedere jonge developer (met een Macbook, iPhone en iPad) vindt het sexy as hell en wil erin coden.
[Reactie gewijzigd door Dreamvoid op zaterdag 9 juli 2011 23:02]
Klopt, maar dat betekent steeds vaker dus alleen maar GNU/Linux. Op Windows servers (en dat zijn er ook veel) is .NET een veel logischer keus
Dat is waar, maar ik zou het iets anders formuleren. Een server is sowieso logischer om op GNU/Linux te hebben draaien (niet alleen Java, maar ook PHP, Ruby, whatever). Windows is een prima OS voor de desktop, maar voor de server heeft het eigenlijk (IMHO) alleen zin voor .NET.
Java komt steeds meer in een server ghetto terecht
Ik weet niet of je dat echt een ghetto kunt noemen. Er verschuift steeds meer en meer naar de server. De meeste developers doen ondertussen serverside development. Misschien dat mobile dat tij nog iets kan keren, maar de server is dus tegenwoordig alles behalve een zielig plekje waar uitgerangeerde technieken nog een mogelijk kans hebben.
Als je als programmeur bij een hippe startup terecht komt, is de kans zeer groot dat deze een of andere web applicatie aan het maken zijn.
Apple heeft met Cocoa/Obj-C goud in handen: iedere jonge developer (met een Macbook, iPhone en iPad) vindt het sexy as hell en wil erin coden.
Absoluut waar, maar voor mobile biedt "Java" toch wel flink wat weerstand via Android. Okay, dit is dus zoals je zelf ook al zegt niet officieel Java, maar praktisch gezien toch wel. 99% van de Java skills van mensen en de meeste tools vertalen zich direct naar Android. Qua gevoel is Android voor velen net zoiets als b.v. Spring op de serverside. Het is dan wel niet van Oracle zelf, maar het is wel degelijk Java.
Apple lijkt tot dusver (in tegenstelling tot MS met .NET), geen enkele poging te doen om Cocoa/Obj-C iets op de server te laten doen. Ze concentreren zich volledig op desktop/mobile. Waar Sun juist voor die markt de boel heeft laten versloffen, doet Apple dat voor de serverside. Ze hadden wat troeven en potentie in handen, maar hebben dat stuk voor stuk laten vallen.
Eigenlijk zijn beide dus grotendeels bij hun roots gebleven. Sun is altijd een network/server bedrijf geweest, en dat is ook waar ze met Java het grootste succes hebben gehaald. Voor Oracle geldt dat ook.
Apple is van oudsher juist een desktop bedrijf dat sinds eind jaren 90 zich volledig is gaan focussen op de consumenten markt. En dat is dan ook precies de markt waar ze met Cocoa/Obj-C het grootste (en dus enige) succes hebben.
Een server is sowieso logischer om op GNU/Linux te hebben draaien (niet alleen Java, maar ook PHP, Ruby, whatever). Windows is een prima OS voor de desktop, maar voor de server heeft het eigenlijk (IMHO) alleen zin voor .NET.
Dat kan je vinden (en daar ben je zeker de enige niet in op T.net), maar de kopers denken er helaas anders over. Windows servers zijn inmiddels
75% van de totale server markt (in aantallen) en net onder de 50% in omzet (logisch, want de doorsnee Windows server is goedkoper dan bv een IBM z/OS mainframe). Je kan over die cijfers bakkeleien, maar zelfs al was het maar de helft dan zijn dat een hoop platforms voor .NET development.
En ja, de kip of het ei: wordt er zoveel in .NET gedaan omdat de Windows servers worden gekocht voor de native applicaties, of vinden devs .NET zo mooi dat ze Windows servers willen? Koopt iedereen Linux servers voor Apache/etc en hangt daardoor voor serverside applicaties al snel aan Java, of pushen verstokte Java fans Linux als serverplatform? Ik durf het niet te zeggen.
Maar goed, Java is net als .NET als een server
en client platform begonnen. .NET is dat nog steeds, maar Java zit alleen nog op de server. En dat is zonde. Al heb je wel gelijk dat voor elke hippe startup met een HTML5 webservice of iOS App een backend in Java nodig is. Dat zou de toekomst van Java veilig kunnen stellen, maar gaan dat soort bedrijfjes niet eerder met Ruby On Rails (ook nieuw en hip) klooien?
[Reactie gewijzigd door Dreamvoid op zondag 10 juli 2011 01:53]
Maar goed, Java is net als .NET als een server en client platform begonnen. .NET is dat nog steeds, maar Java zit alleen nog op de server. En dat is zonde
Microsoft heeft het natuurlijk niet verkeerd gedaan. C# is sterk verbeterd sinds het is afgesplitst van Microsoft's Java versie en zowel in .NET als het ASP.NET gedeelte zitten veel mooie dingen.
Aan de andere kant is de situatie met Cocoa en .NET voor op de desktop toch wel heel anders als Java.
Zowel Apple als Microsoft hebben Cocoa resp. .NET groot gemaakt op hun
eigen platform. Apple heeft simpelweg Cocoa/Obj-C verplicht gesteld voor ontwikkeling op de iPhone en iPad en als primaire 'native' toolkit voor OS X. Ook Microsoft heeft .NET als primary toolkit voor Windows apps bestempeld. Waar er alternatieven zijn (b.v. Qt op OS X en Windows). lopen deze altijd achter op de laatste look 'n feel van nieuwe versies van het OS.
Het zou beter te vergelijken zijn als Apple en MS hun toolkits ook op andere platforms populair hadden weten te maken, maar dat is dus absoluut niet gebeurd (het is niet eens geprobeerd).
Sun had geen eigen populair desktop product. Er was Solaris, maar dat werd op de desktop alleen nog in enkele labs gebruikt. Het was dus niet echt mogelijk om Java als native of default desktop toolkit te bestempelen ergens.
Al heb je wel gelijk dat voor elke hippe startup met een HTML5 webservice of iOS App een backend in Java nodig is. Dat zou de toekomst van Java veilig kunnen stellen, maar gaan dat soort bedrijfjes niet eerder met Ruby On Rails (ook nieuw en hip) klooien?
Ruby zelf is trouwens zeker niet nieuw. Het is van 1995, nagenoeg even oud als Java dus. RoR is flink nieuwer (2005) maar de hip-heid lijkt toch flink tanende. Aangezien je voor RoR toch Ruby nodig hebt, lijkt me de Tiobe language index voor Ruby een maat voor RoR populariteit:
http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html
Je ziet ook dat Twitter grotendeels afstapt van Ruby. Dit terwijl juist Twitter zo rond 2007/2008 RoR toch een flinke boost van coolheid gaf. Ironisch gezien stapt Twitter voor een gedeelte juist over naar Java, maar ook naar Scala.
Maar goed, een gedeelte van de hippe bedrijfjes zullen inderdaad Ruby gebruiken, een gedeelte Scala en een gedeelte Java. Klaarblijkelijk is Java tot op heden toch nog steeds de meest gebruikte techniek voor zo'n backend. Het heeft wel wat marktaandeel moeten geven aan diverse andere technieken (waaronder .NET servers), maar de markt is groot genoeg en nog geen van deze andere technieken heeft echt een significant marktaandeel weten te veroveren.
Ik zie de toekomst van Java in het blijven veiligstellen van het serverside martkaandeel wat ze nu hebben (en dat is al moeilijk genoeg, want de concurrentie is moordend en de bloggers die Java onderuit proberen te halen zijn meedogenloos en vlijmscherp).
Wellicht kan Java zelfs een stukje aandeel terug veroveren, want na enkele jaren komen veel mensen er ook wel achter dat de blogs van destijds "Ruby is 100x meer productiever dan Java, want Java is absolutely crap", op z'n minst toch wat overdreven waren. Als een Ruby project eenmaal gegroeid is heeft het ook gewoon de problemen waar men Java van beschuldigde destijds en deze problemen lost Java zelfs een (flink) stukje beter op.
Het zou beter te vergelijken zijn als Apple en MS hun toolkits ook op andere platforms populair hadden weten te maken, maar dat is dus absoluut niet gebeurd (het is niet eens geprobeerd).
Op servers niet, maar op de desktop wel: Microsoft neemt de Silverlight client op OS X duidelijk erg serieus. Het is bijna de wereld op zijn kop, maar als ik nu een desktop-gerichte RIA zou moeten bouwen die op OS X en Windows moet werken (=99% van de desktop markt), dan zou ik 'm in Silverlight maken, niet in Java, Flash/Air of HTML5. Andersom doet Apple niets aan crossplatform, maar met hun explosieve groei en hun sterke gesloten ecosysteem concept denk ik niet dat ze dat heel erg belangrijk vinden.
Maar begrijp me niet verkeerd, ik ben geen Java basher, ik ben alleen bezorgd voor de toekomst. Oracle moet er echt werk van maken, want
deze trend is toch niet hoopgevend, en dat is *ondanks* het megasucces van Android. Ik vind Java op het moment misschien nog wel het beste framework dat er is: het heeft zijn slechte kanten maar IMO wordt een goed security model het allerbelangrijkste voor de komende jaren, en Java heeft het beste (met .NET als goede tweede). Ik houd mijn hart vast voor HTML5: crossplatform is leuk, maar blind de browsers vertrouwen dat ze code goed sandboxen heeft nog nooit gewerkt. Cocoa heeft op iOS laten zien dat het zo lek als een mandje is en serieus verbeterd moet worden. Java heeft op de Blackberry daarentegen al tien jaar een fantastische track record qua security, en ik hoop dat RIM zich goed realiseert wat ze riskeren door naar Air over te stappen.
Interessant trouwens dat Ruby alweer stagneert. Zie ook dat Python (ook zo'n belofte) en PHP ook wat terugvallen. Overhyped, groeipijnen?
[Reactie gewijzigd door Dreamvoid op zondag 10 juli 2011 23:21]
, ik ben alleen bezorgd voor de toekomst. Oracle moet er echt werk van maken, want deze trend is toch niet hoopgevend
Klopt, het is al een jaren lange langzaam neergaande trend, met enkele pieken maar telkens een volgende dal wat weer iets lager is.
Aan de andere kant kun je de graph ook lezen als dat begin 2000 er weinig alternatieven voor Java (en destijds C++) op de markt waren en deze samen dus een vrij hoog marktaandeel hadden.
De laatste 10 jaar is er meer (gezonde) concurrentie in de markt gekomen, waarbij Java zich nu aan het stabiliseren is rond de 19%. Geen alleenheerser meer, maar nog wel steeds de grootste.
Interessant trouwens dat Ruby alweer stagneert. Zie ook dat Python (ook zo'n belofte) en PHP ook wat terugvallen. Overhyped, groeipijnen?
Idd, deze meest directe concurrentie voor het 'populaire/hippe' nieuwe web applicaties segment (Ruby, Python en PHP dus) zag je allemaal eerst vrij snel stijgen maar nu allemaal net zo hard weer dalen. Tiobe had vorige maand hierover nog een klein stukje geschreven dat deze "web talen" idd in populariteit aan het afnemen waren.
Andere leuke trend die je er in kan lezen is dat C-achtige talen (C, Objective-C, C++, Java, C#) samen verreweg het populairst zijn. Dat is eigenlijk ook gunstig voor Java, want het betekend dat mensen relatief makkelijk op Java kunnen overstappen vanaf de andere populaire talen.
Ik houd mijn hart vast voor HTML5: crossplatform is leuk, maar blind de browsers vertrouwen dat ze code goed sandboxen heeft nog nooit gewerkt.
Dit is inderdaad even afwachten. Gaan het hele web echt naar client applicaties zoals nu op mobile m.b.v. HTML5 (waarbij de naam HTML eigenlijk niet meer van toepassing is) met de server slechts als 'data leverancier'? Gaat Silverlight of Java Applets hier nog een grotere rol in spelen?
Het zou een beetje de doodsteek zijn voor traditionele web frameworks zoals RoR, ASP.NET, JSF, Wicket en velen anderen. GWT valt hier dan een beetje tussen: hier schrijf je de client-side applicatie weliswaar in Java, maar deze wordt dan gecompiled naar Javascript en in de toekomst wellicht naar HTML5+javascript.
Of willen mensen hoe dan ook direct in HTML5 gaan programmeren en willen ze het niet gedegradeerd zien worden tot 'assembly taal' van het web?
In het laatste geval zou de rol van Java nog iets teruggedrongen worden en zou het hele web framework gebeuren weg vallen, maar dingen als JAX-RS, CDI, EJB, JPA, JMS, Bean Validation etc nog steeds zeer actueel blijven. Maar goed, dat blijft koffiedik kijken, want voor het zelfde geld gaat maar een percentage van de web apps voor rich clients en blijft een ander belangrijk percentage gewoon 'simpele' HTML uitserveren.
Dreamvoid: Apple heeft met Cocoa/Obj-C goud in handen: iedere jonge developer (met een Macbook, iPhone en iPad) vindt het sexy as hell en wil erin coden.
De hippe web designer die indruk wil maken met hoe mooi zijn mac eruit ziet misschien. Ik zat in een technische informatica klas (HBO) en de meeste deden .net, c/ c++ of java. Slechts een paar hadden een macbook.
[Reactie gewijzigd door Leejjon op dinsdag 12 juli 2011 10:23]