rss

Dlaczego nie piszę aplikacji w Javie

A dlaczego miałbym pisać w Javie? To tylko jedna z dostępnych technologii, może najpopularniejsza, ale nie koniecznie najlepsza. Na ogół opieram się o inne platformy, a zawsze wybór języka programowania traktuję jako wtórny, podczas gdy na pierwszym miejscu musi stać funkcjonalność aplikacji.

Michał Paluchowski, 26 kwietnia 2010

Logo Java

Nie myślałeś, żeby pisać w Javie?” Znajomy będący na drodze do założenia własnej firmy siedział naprzeciwko mnie, chcąc zebrać garść doświadczeń z moich biznesowych bojów. Opowiedziałem mu, że tworzę aplikacje internetowe, głównie w oparciu o PHP. Odpowiedziałem „Owszem, myślałem, ale nie ma czegoś napisanego w Javie, czego nie mógłbym stworzyć w PHP.

Mamy mnóstwo technologii, w których obecnie można tworzyć aplikacje. Do PHP i Javy dochodzą jeszcze Ruby, Python, Adobe Flex czy AIR i cała reszta, która akurat nie przychodzi mi do głowy. W każdej z nich mógłbym potencjalnie pisać, każda też ma swoją rzeszę fanów uznających, że „ich” technologia jest najlepsza na świecie i lepsza od wszystkich, które były przed nią oraz wszystkich, które przyjdą po niej. Moja deklaracja z pierwszego akapitu mogłaby w takich warunkach wywołać niejedną wojnę.

Do czego jest Java?

PIerwotnym motto powstania Javy jest „write once, run anywhere„, a więc raz napisany kod można uruchomić na praktycznie dowolnej platformie sprzętu i oprogramowania – wystarczy stworzyć dla niej interpreter. Java znakomicie spisuje się w warunkach, kiedy aplikacja ma funkcjonować w bardzo zróżnicowanym środowisku.

Argument niezależności od platformy traci natomiast wagę w przypadku aplikacji internetowych, które na poziomie serwera działają zazwyczaj w środowisku jednolitym, natomiast na poziomie klienta owszem, zróżnicowanym, ale opartym o w miarę jednolite standardy tworzenia interfejsów webowych.

Dodatkowo Java jest językiem bardzo przyjaznym programistom – zaprojektowanym na bazie długich dawnych doświadczeń, bez naleciałości, uporządkowanym i bogatym. Mamy do dyspozycji wiele wygodnych narzędzi – IDE, które pozwalają błyskawicznie poruszać się po kodzie, narzędzia do zunifikowanej kompilacji, testowania i instalowania, testy jednostkowe i wiele gotowych bibliotek, które można ściągnąć i w postaci pliku JAR błyskawicznie wbudować w tworzoną aplikację.

PHP i tutaj natomiast daje sobie radę, ponieważ od początku był pisany przez programistów dla programistów. Łatwość programowania w nim działa mu czasem na niekorzyść, ściągając wielu amatorów, czego rezultatem jest mnóstwo niskiej jakości kodu (i powszechne przeświadczenie, że to „kiepski” język). Narzędzi do PHP również jest wiele, składnia języka jest podobna do Javy a biblioteki można tworzyć zarówno w PHP jak i pisać rozszerzenia do interpretera.

Ale, czy PHP da radę?

Java jest przecież technologią stworzoną od podstaw do skalowalności (nie mylić z wydajnością) – do obsługi gigantycznych obciążeń, dostarczając niezmiennie jednakową, wysoką jakość usług. PHP tymczasem zostało początkowo napisane amatorsko, w wolnym czasie przez pewnego informatyka, później co prawda przepisane, ale ciągle z myślą głównie o łatwości programowania, nie skalowalności.

Wystarczy jednak rozejrzeć się po Internecie, żeby zobaczyć jak radzi sobie PHP. Pierwszym przykładem jest obecnie drugi najpopularniejszy serwis na świecie – Facebook, który napisany jest w PHP a obsługuje ponad 400mln użytkowników. Fakt, że jego twórcy narzekają od czasu do czasu na technologię, do tego stopnia nawet, że piszą własne narzędzia do optymalizacji i kompilacji kodu. W tej skali jednak trudno im się dziwić.

Nieco mniejszy, bo „tylko” na 100ej pozycji Alexa, znajduje się serwis Digg, który dla swoich kilkudziesięciu milionów użytkowników również stworzył platformę w PHP.

Podobne przykłady można znaleźć dla dowolnej innej technologi, np. Ruby, w której napisany jest LinkedIn obsługując obecnie ponad 60mln użytkowników, czy też jeszcze popularniejszy Twitter.

Do tego funkcjonalnie PHP sprawdza się niemalże przy każdej okazji. To dojrzały język programowania, który w wersji 5 ma przyzwoity model obiektowy oraz szereg rozszerzeń, które pozwalają korzystać z mniej lub bardziej standardowych technologii, od Unicode przez abstrakcję na silniki baz danych po parsowanie XML.

Może jednak Java?

Skoro stwierdziłem, że PHP da radę wszędzie, gdzie jest Java, to prawdą jest i odwrotne stwierdzenie – Java da radę tam gdzie działa PHP. I skoro tak jest, to równie dobrze mógłbym swoje aplikacje pisać w Javie. Prawda jest taka, że… piszę. Mam kawałek doświadczenia w Javie, wiele pozytywnych wrażeń i jeśli tylko projekt się nadaje, chętnie piszę w Javie.

Prowadząc firmę trzeba sobie jednak zdać sprawę, że biznes to tylko częściowo technologia. Przede wszystkim tworząc na potrzeby innych, wielokrotnie otrzymamy narzucone warunki pracy. Klient może mieć całą resztę swojego oprogramowania w Javie i w tej sytuacji na pewno nie będzie chciał w tym zestawie mieszać. Może też słyszał niedobre rzeczy o PHP, więc tej technologii (niekoniecznie racjonalnie) będzie chciał unikać.

Jeśli w powyższej sytuacji usztywnimy się i okopiemy w obozie jednej technologii, ryzykujemy utratę klienta.

Każdą rozmowę o nowym projekcie zaczynam stricte biznesowo – dlaczego ma powstać aplikacja i jakie cele ma spełniać? Później omawiamy warunki, w jakich ma funkcjonować – sprzęt, inne oprogramowanie, użytkownicy i personel IT. Dopiero na końcu wybieramy technologię – o ile w tym momencie jest jeszcze jakiś wybór.

Nie twierdzę w żadnym razie, że wybór technologii jest nieistotny. Wiele banków wybrało lata temu język COBOL do swojego oprogramowania i dzisiaj mają z nim wiele trudności. (Widziałeś kiedyś jakiś kawałek kodu w COBOL? Ja też nie. Spróbuj zatrudnić programistę, który go zna.) Nie jest to jednak aż tak istotny argument jak mogliby sądzić zagorzali fani Javy, PHP, Ruby czy dowolnej innej technologii. Wielokrotnie ważniejsze jest jak aplikacja działa, a nie w czym została napisana.