Näillä palstoilla ollaan keskusteltu paljolti ja monesti asioista java vastaan C# ja J2EE vastaan .NET. Ja varsin monet ihmettelee näköjään, että kumpaan kannattaa panostaa? Itse halusin hieman kommentoida tätä asiaa sillä en pidä kummankaan kielen tai arkkitehtuurin opiskelua toistaan pois sulkevana. Kovaa työtähän se vaatii ja hermoja koska kahden ohjelmointikielen opiskelu ei ole herkkua aina, kun sekoilee vähän väliä hieman erilaisten asioiden kanssa, puhumattakaan kokonaisista arkkitehtuureista. No kumpi sitten valita jos haluaa aloittaa jommalla kummalla näistä hypetetyistä kielistä ohjelmoimaan? Mielestäni hyvä lähtöargumentti on se, että jos haluat portattavaa koodia valitse java ja sen myötä tietysti J2EE, mutta jos teet taas ohjelmointia pelkästään MS ympäristöön niin siinä tapauksessa voisi jo suositella C# ja .NETiä koska kuitenkaan vielä C# ei ole täysin kehittynyt alustariippumattomaksi koodiksi puhumattakaan .NET arkkitehtuurista. Java on hieman vaikeampaa oppia kuin C# (omasta mielestäni), mikä johtuu siitä, että javassa joutuu tekemään asioita paljon hienojakoisemmista rakennuspalikoista kuin C#:ssa. Esimerkiksi javassa ei ole suoraa kopiointi metodia, joten koodari joutuu sen itse tekemään. Tämä kuitenkin tuo tietynlaista laajentuvuutta kieleen sillä kun joudut itse koodaamaan kopiointi ja monet muut metodisi itse niin siinä vaiheessa kun aletaan tekemään kehittyneempää ja enemmän hiomista vaativaa ohjelmointia niin tiedät miten koodia voidaan optimoida ja miten erilaisia Streameja on hyvä käyttää ja mihinkin tarkoitukseen. Koska C#:ssa on suuri osa metodeista koodattu valmiiksi se tekee kynnyksestä korkean alkaa itse tutkiskella miten asiat ja esim. juuri kopiointi toimii oikeasti. En sano, etteikö muka C# olisi mahdollisuutta tehdä näitä asioita myös itse, tottakai on, mutta valmiit metodit vain saattavat joissakin tapauksessa vaikeuttaa vaativamman ohjelmoinnin oppimista juuri sen takia koska ohjelmoijan ei tarvitse vaivata päätään näillä kyseisillä asioilla.
Se kumman kielen ja arkkitehtuurin loppujen lopuksi valitsee on täysin makuasia. Itse henkilökohtaisesti kuitenkin karsastan microsoftin teknologioita sen takia koska M$:lla on tapana tehdä sovelluksia ja teknologioita, jotka poikkeavat avoimista standardeista ja muista ympäristöistä juuri sen verran, että Microsoftin tuotteista tai teknologioista ulkopuolisiin siirtyminen on vaikeaa ja kallista. Juuri tästä syystä olenkin valinnut javan lempi ohjelmointikielekseni vaikka C# tulee ohessa myös treenailtua.
Se kumman kielen ja arkkitehtuurin loppujen lopuksi valitsee on täysin makuasia. Itse henkilökohtaisesti kuitenkin karsastan microsoftin teknologioita sen takia koska M$:lla on tapana tehdä sovelluksia ja teknologioita, jotka poikkeavat avoimista standardeista ja muista ympäristöistä juuri sen verran, että Microsoftin tuotteista tai teknologioista ulkopuolisiin siirtyminen on vaikeaa ja kallista. Juuri tästä syystä olenkin valinnut javan lempi ohjelmointikielekseni vaikka C# tulee ohessa myös treenailtua.
Vastaukset 13
Vanhimmat
siitä puuttuu?
Java oli hyvä ja hieno idea. Microsoft oli omaksunut Javan osaksi Windows-jakelua ja levitti sitä käyttöjärjestelmiensä mukana vuosien ajan. Kaikki näyttikin hyvältä ja Java levisi miljooniin koneisiin ympäri maailmaa, kunnes riitely alkoi.
Sun ei hyväksynyt Microsoftin virtuaalikoneeseen lisäämiä Windowsin ominaisuuksia ja käyttöliittymää tukevia laajennuksia, jotka mahdollistivat normaalien Java-sovellusten lisäksi myös Windows-ohjelmien tekemisen.
On selvää, että Windowsille tehdyt ja Microsoftin laajennuksia käyttävät ohjelmat eivät toimisi muilla käyttöjärjestelmäalustoilla, mutta se ei tarkoittanut sitä, etteikö ohjelmoija olisi niin halutessaan pystynyt tekemään myös alustariippumatonta sovelluksia. Windowsille tehdyt ohjelmat ja Windowsin ominaisuuksia hyödyntävät ohjelmat olivat sidottuja Windowsiin.
Sun halusi pitää Javan ohjat täysin omissa käsissään, eikä sallinut Microsoftin tarjoavan kehittäjille mitään mahdollisuutta tehdä Javalla myös "natiiveja" Windows-ohjelmia, vaan vaati että kaikkien Java-ohjelmien on toimittava kaikilla laite- ja käyttöjärjestelmäalustoilla. Toisaalta ymmärrettävää, toisaalta taas ei.
Koska Microsoft ei saanut tukea Windows-kehitystä Javalla, Java hyllytettiin ja korvattiin .NET -arkkitehtuurilla. Tuloksena on kaksi osaksi samankaltaista ja keskenään kilpailevaa systeemiä; Java ja .NET.
Oma veikkaukseni on, että .NET tulee olemaan vankka ykkönen Windows-puolella, eihän Javan virtuaalikonetta enää edes toimiteta Windowsin mukana, vaan käyttäjän on osattava ladata ja asentaa se itse, kun taas muilla alustoilla Java on ainakin toistaiseksi pääroolissa. Toki Java-sovellukset toimivat edelleenkin Windowsissa, mutta vain Sunin määräämissä puitteissa. Natiiveja Windows-ohjelmia ei Javalla kuitenkaan tehdä, mikä ei ainakaan Windows-kehittäjiä suuremmin viehätä.
Se kuitenkin on selvää, että Sun sahasi vain ja ainoastaan omaa oksaansa aloittaessaan riitelyn.
Ehkä näin on kuitenkin parempi. Molemmat firmat, sekä MS että Sun, saavat vapaasti toteuttaa visioitaan ja aika näyttää kumpi lopulta oli oikeassa.
Koska itse teen ohjelmia vain Windowsille, enkä piittaa tippaakaan Linuxista tai sen marginaalisesta markkinaosuudesta, .NET oli luonnollinen valinta itselleni.
sinulla ruusuinen kuva Microsoftin tekemisistä ja vaikuttimista Javan suhteen! Lieneekö tekstisi peräti virallista propagandaa, mutta suosittelisin tutustumaan aiheeseen nk. puolueettomista lähteistä.
Tarkoitukseni oli tietenkin tuoda esille, että natsi-saksan mallilla toimiva Microsoftin salaisena suunnitelmana oli saastuttaa koko maailma Javan avulla, mädättää viattomien lasten selkärangat, luoda maailmanlaajuinen nälänhätä ja haudata Eurooppa uuden jääkauden alle.
mutta kiitän näistä valaisevista tausta- ja sisäpiiritiedoista. Tätä ennen oma tietämykseni oli rajoittunut suunnilleen tähän:
http://www.geocities.com/ResearchTriangle/Node/2005/msjava.htm
Mikä alkuperäisessä kirjoituksessani ei pitänyt mielestäsi paikkaansa tai on ristiriidassa linkkissäsi kerrotusta?
Kirjoituksesi esitti Sunin pahana ("Sun ei hyväksynyt...", "Sun halusi pitää...", "...Sun sahasi vain ja ainoastaan omaa oksaansa aloittaessaan riitelyn" jne.) ja Microsoftin suurena hyväntekijänä ja lopulta tapauksen uhrina ("...sallinut Microsoftin tarjoavan kehittäjille...", "...Microsoft ei saanut tukea Windows-kehitystä Javalla..." jne.).
Kirjoituksesi ja katsontakantasi olivat lievästi sanottuna puolueellisia ja tarkoitushakuisia, sillä Microsoft ei ole tehnyt ainakaan kymmeneen vuoteen yhtään mitään epäitsekkäistä lähtökohdista, meitä ohjelmoijia, asiakkaitaan tai yhteistökumppaneitaan auttaakseen.
En osaa puolustella myöskään Sunin tekemisisä Java-kiistassa, sentään niin tarkkaan en tapausta tunne, mutta kannattaa pitää mielessä kenen keksintö Java on ja kenellä on sen tekijänoikeudet.
"Sun ei hyväksynyt..."
"...sallinut Microsoftin tarjoavan kehittäjille..."
"...Microsoft ei saanut tukea Windows-kehitystä Javalla..."
Siitähän kiistassa nimenomaan oli kyse. MS halusi, että Javalla olisi voitu tehdä myös natiiveja Windows-ohjelmia ja tarjosi siihen välineet kehittäjille, mutta se ei käynyt Sunille, koska heidän mielestään Java-ohjelmien piti toimia kaikilla laite- ja käyttöjärjestelmäalustoilla ilman muutoksia.
"Sun halusi pitää..."
Sun halusi säilyttää kontrollin Javan suhteen itsellään, mihin sillä tottakai oli oikeus, koska onhan Java Sunin tuotekehittelyn tulos.
"Sun sahasi vain ja ainoastaan omaa oksaansa"
Kyllä. MS ei tue Javaa enää juurikaan millään tavalla sen enempää käyttöjärjestelmissään kuin kehitysvälineissäänkään. Javaa ei enää toimiteta automaattisesti Windowsin (yli 90% markkinaosuus) mukana, vaan käyttäjien on osattava imuroida Javansa Sunin sivuilta ja osattava asentaa se. Voin toki olla väärässäkin, mutta minun mielestäni Sun hävisi kiistassa melkoisen edun (vrt IE vs NS), mutta eipä .NET:n kehittäminen ilmaiseksi tullut Microsoftillekaan.
"Kirjoituksesi ja katsontakantasi olivat lievästi sanottuna puolueellisia ja tarkoitushakuisia"
En mielestäni ottanut millään tavalla kantaa siihen kumpi oli oikeassa. Tosiasia on kuitenkin se, että mikäli riitoja ei olisi ollut ja Sun olisi sallinut MS:n tukea Javassa Windows-sovelluskehitystä, ehkäpä .NET:iä ei olisi koskaan edes tullut.
"Microsoft ei ole tehnyt ainakaan kymmeneen vuoteen yhtään mitään epäitsekkäistä lähtökohdista"
Sivuseikka varsinaisen asian kannalta. Eipä myöskään Sun ole mikään hyväntekeväisyyslaitos. Molemmat ovat liikeyrityksiä ja molemmilla on lähtökohtana vain ja ainoastaan oma etu ja raha. Turha edes kuvitella muuta.
Pääsit jo melkein villakoiran ytimeen. Pienellä kriittisellä tarkastelulla, ajan kanssa.... Mutta tällä erää kiitän kommenteistasi ja ehdotan, että jäämme mielenkiinnolla seuraamaan kehitystä Javan ja .NET:in ympärillä.
Laihakin sopu on lihavaa riitaa parempi, väitetään. Jos sopuun ei kuitenkaan päästä, paras voittakoon, mutta iskuja vyön alle ei hyväksytä!
Molempia käytetään tällä hetkellä ja tullaan käyttämäänkin. J2EE:tä käytetään kyllä enempi kuin .NET:iä. Molempien käyttö myöskin näyttäisi lisääntyvän koko ajan.
"J2EE:tä käytetään kyllä enempi kuin .NET:iä"
Olisikohan noin? Sun ilmoittaa Java-kehittäjien määräksi n. 3 miljoonaa (sen perusteella mitä Java SDK:ta on imuroitu). Microsoftilla on jo pelkästään Visual Basic -kehittäjiä 4-6 miljoonaa, joista valtaosa ei voi välttyä päivittämästä VB.NET:iin ennemmin tai myöhemmin.
Ja jatkossa .NET:iä pukataan koneisiin joka tuutista ja ympätään jokaiseen ohjelmaan (Office, Windows, PDA:t, puhelimet jne), aivan kuten Javaa ennenvanhaan.
Ei siis hyvältä näytä Javan ja Sunin kannalta, ainakaan Windows-puolella, joka kuitenkin käsittää n. 92% laitekannasta (lähde: Google zeitgeist).
Tämä ei kuitenkaan tarkoita sitä, että Java tulisi kuolemaan. Eiköhän molemmille löydy käyttäjiä.
Nokialta ensi vuonna 100 miljoonaa java-laitetta
http://www.digitoday.fi/showPage.php?page_id=12&news_id=25227
Novellin Ximian naittaa Microsoftin .netin Linuxiin
http://www.digitoday.fi/showPage.php?page_id=9&news_id=27152
Viime vuonna tehtiin laaja tutkimus aiheesta. Vielä käytetää paljon vanhoja kieliä kuten Visual Basicia. Mutta tutkimuksen mukaan 38 % on siirtymässä C# kieleen, 31 % Javaan ja kolmasosa VB.nettiin. Tasasta siis on eli kaikki nuo kolme tulee varmasti tulevaisuudessa olemaan kovia sanoja.