Z kilku mniej lub bardziej zależnych ode mnie powodów brałem (biorę?) udział w dwóch dużych projektach używających Javy jako głównego języka programowania. Aby dokładniej ustalić perspektywę: pierwszy projekt (a) wygenerował sporo ponad 1MB kodu, w drugim (b) powstało go niewiele mniej niż 1MB. Nie jest to monstrualnie dużo, ale nie jest też mało biorąc pod uwagę, że przy projekcie (a) pracowały 4 osoby, a przy projekcie (b) jedna - uważnemu czytelnikowi pozostawiam wydedukowanie kto :).
Przyznam się szczerze, że jeszcze przed napisaniem pierwszej liniki byłem nienajlepiej nastawiony do całej idei Javy. Większość języków można podzielić między następujące kategorie:
Jak długo język wpisuje się w ten schemat, tak długo wszystko jest w porządku. Nawet jeśli taki OCaml, ze swoim wiecznie niezadowolonym i wchodzącym mi w drogę systemem typów, jest irytujący do granic możliwości, to wiem że jest to kwestia osobnicza. Fakt, że źle MI się pracuje z jakimś narzędziem, nie oznacza od razu, że jest ono wadliwe. Spróbowałem, obiektywnie doceniam siłę wyrazu i kod ludzi którym ono pasuje, ale subiektywnie kodować w nim nie chcę. Koniec historii, bez flejmów, inkwizycji i indoktrynacji niewiernych. Alternatyw jest wiele, a o gustach się nie dyskutuje.
Java jest inna. Nie jest super wydajna, nie rozwiązuje nowych problemów (Java is in many ways (C++)--), tylko udaje czystą obiektowość, a już na 100% nie przejmuję się wygodą i wydajnością programisty. Nie ma żadnych ciekawostek, niczym nie zachwyca. Więc po co? O co chodzi? Dlaczego im się chciało?
Jakie pobudki mogły kierować wielką korporacją, przy tworzeniu języka, który jest nijaki do sześcianu? Kto przy zdrowych zmysłach próbuje wyrzucić _wszystko_ co ciekawe? Dlaczego naprostszy pomysł musi mieć trzyliterowy skrót (tm)? Czemu musi się od razu stać Technologią Z Poważnie Brzmiącą Nazwą (r)(tm)(c)(omg)(wtf) (żeby daleko nie szukać weźmy JavaBeans'y)? Czy ktoś się pomylił?
Ha! Wiem. Nikt nie popełnił błędu, wszystko jest doskonale przemyślane. Java nie ma uszczęśliwiać procesora i pamięci jak C, kompilatora jak Lisp, ani programisty jak Ruby. Java ma uszczęśliwiać zarząd, pana dyrektora (PHB) i akcjonariuszy. Wszystkie te standardy określające nawet najgłupsze pierdoły, sprawiają że człowiek nie tyle programuje, co generuje kod (no, pomaga eclipse generować kod klikając odpowiednie przyciski). Zysk dla korporacji jest niebagatelny, praktycznie w każdej chwili, można wymienić dowolnego programistę na nowego, sprowadzić kodowanie do poziomu pracy fizycznej, przeliczalnej na osobogodziny.
Nie obchodzi mnie, że połowa ogłoszeń dotyczy "programistów J2EE/Java" albo innych .NETów (tu przynajmniej jest kilka ciekawych zabawek jak CLI). Programuję w pierwszej kolejności bo lubię, dopiero w drugiej bo mi za to płącą. Generowania kodu w Javie nienawidzę, więc będę bardziej niż szczęśliwy, jeśli po te pieniądze schyli się ktoś inny. Tak, schyli się to dobre słowo!