Postanowiłem przenieść dyskusję z wątku o Delphi, gdzie moderator @Krolik usilnie porównuje każdą rzecz w Delphi do Javy. Więc moich kilka obserwacji dlaczego Java nie ma przyszłości:
Moje argumenty to:
1. 161 krytycznych luk w Javie w 2013 roku
http://www.kaspersky.com/about/news/virus/2013/Is_there_any_protection_against_Java_exploits
Czy można zaufać technologii, która sprawia, że twórcy exploitów, malware kitów, hakerzy mogą infektować miliony użytkowników korzystając z luk w Javie, które statystycznie wykrywane były co 2 dni w 2013 roku? Czy jakakolwiek inna technolgia jest tak zabugowana i przyczyniła się do infekcji aż tylu użytkowników, o czym pisze Kaspersky?
Uczepiłeś się tych luk jak rzep psiego ogona. Wszyscy Ci tłumaczą, że luki dotyczą tylko sandboxu Javy, który nie jest wykorzystywany ani w aplikacjach desktopowych ani w serwerowych. Aplikacje napisane w Javie są mniejszym zagrożeniem niż aplikacje w Delphi czy C, bo w tych pierwszych znacznie trudniej doprowadzić do zdalnego wywołania kodu przez przepełnienie bufora i inne błędy związane z zarządzaniem pamięcią. Jedyne co pozostaje to exploitowanie błędów w logice aplikacji.
Poza tym, nawet uwzględniając luki w sandbox Javy, ich liczba jest i tak mniejsza niż innych aplikacji mających bezpośrednią styczność z niezaufanym kodem:
Chrome, Firefox, Adobe Acrobat - wkleiłem Ci linki w innym wątku.
2. Oracle ledwo zipie, a sama Java umiera śmiercią naturalną skoro nawet instalator Javy JRE zawiera w sobie AskToolbar-a, badziew wciskany userom za które Oracle zgarnia kilka centów za każdą instalację, tak zachowują się firmy, które ledwo dają radę i chcą za wszelką cenę jeszcze zarobić na popularności upadających technolgii. Microsoft nie wciska ludziom badziewnych toolbarów przy próbach instalacji .NET Framework-a
Dobry żart. Oracle może jest troszkę podkopywany m.in. przez nas na rynku baz danych, ale ogólnie ma się całkiem nieźle i jest nadal w pierwszej pięćdziesiątce najwyżej wycenianych firm na świecie. A nawet jeśli Oracle by upadł, to jest jeszcze IBM, Apple, Google i inne firmy, którym na Javie za bardzo zależy.
3. Brak jakichkolwiek interesujących aplikacji na PC, oprócz Minercrafta i narzędzi programistycznych jak Eclipse.
Z interesujących: Cisco Webex (używane w korporacjach do telekonferencji), JabRef (manager cytowań używany przez naukowców), Azureus/Vuze (jeden z najlepszych klientów do wymiany plików), mnóstwo narzędzi programistycznych dla programistów innych języków niż Java: PyCharm, RStudio, Nokia SDK.
4. Technologia kompilacji kodu Java do pseudokodu nie chroni twórców oprogramowania przed kradzieżą źródel aplikacji z wykorzystaniem dekompilatorów jak JD-GUI czy JAD bez wykorzystania specjalizowanych obfuscatorów, które i tak zwykle niewiele dają, a jak mniemam nie każdy tak bardzo kocha open source, że cieszy się gdy konkurencja przegląda mu całe źródła ciężko utworzonych aplikacji (na platformę .NET dostępne są dużo bardziej zaawansowane narzędzia) .
JAD potrafi się wyłożyć na nieobfuscowanym kodzie, a co dopiero na kodzie przejechanym ProGuardem. Poza tym rozbudowany program można tak naprawdę wypuścić razem ze źródłami i konkurencji niewiele to da - chyba nigdy nie pracowałeś w słabo udokumentowanym kodzie na milion linii kodu. Często łatwiej napisać od zera niż zrozumieć. Microsoft od lat daje źródła zainteresowanym firmom, raz źródła wyciekły, i co? Ktoś ich użył do zrobienia konkurencyjnego Windowsa?
Mam wrażenie, że nie bardzo wiesz, jakimi prawami rządzi się rynek IT. Główna wartość w IT to ludzie i projekt (i kultura organizacyjna wokół projektu), nie kod źródłowy. Dzięki temu jest wiele firm, które zarabiają na open-source nie mniejsze pieniądze niż da się zarobić na closed-source.
**5. Java nie jest, nie była wspierana na iOS, Steve Jobs powiedział "Java's not worth building in. Nobody uses Java anymore. It's this big heavyweight ball and chain." **
Jak zwykle masz nieaktualne i nieprawdziwe informacje. Java na iOS ma się dobrze, tylko trzeba ją odpowiednio skompilować. Tu masz listę aplikacji w AppStore napisanych w Javie: http://www.robovm.org/. Poza tym Javę można kompilować do JS przez GWT i wtedy chodzi na wszystkim, i nawet nie wiesz, że to napisane w Javie. Jest to przy tym bardzo stabilne i dojrzałe rozwiązanie, wykorzystywane przez Google w wielu produktach.