Java – czyli co z czym i dlaczego

Pamiętam jak dziś podziw w jaki wpadłem kiedy za czasów dalece prehistorycznych zainstalowałem na kompie coś, co nazywało się Borland C++ Builder IDE (w wersji chyba 4.0) i zobaczyłem, że stworzenie okienkowej aplikacji działającej w Windows może być proste jak konstrukcja gwoździa. Oczywiście od tamtego czasu (jakiś 1997 rok) minęło trochę czasu, ale i tak równie nabożny lęk ogarniał mnie wówczas, kiedy stykałem się (głównie przypadkiem) z możliwościami platformy Javy. Kiedy w końcu postanowiłem zgłębić to zagadnienie okazało się, że nie jest to wcale takie proste.

By jednakże nie komplikować za wiele – Java jest silnie typowanym językiem programowania stworzonym pierwotnie przez firmę Sun. Kod źródłowy programów jest kompilowany do tzw. byte-codu, a następnie uruchamiany za pomocą tzw. wirtualnej maszyny Javy (JVM). Odrębne dystrybucje tejże maszyny zostały napisane dla niemal wszystkich będących w użyciu systemów operacyjnych, co sprawia, że programy napisane w Javie mogą być uruchamiane na niemalże każdej platformie systemowej.

Oczywiście sam język Java to dopiero podstawa całej platformy. Istnieje kilka tzw. edycji tego języka, które są używane w zależności od potrzeby. To właśnie ich istnienie było dla mnie na początek zastanawiające – oto lista:

  • Java SE – jest to ‘podstawowa’ wersja języka Java. Zawiera ona także JRE (Java Runtime Environment), czyli mówiąc inaczej jest to implementacja wirtualnej maszyny. Jest to wersja ogólnego przeznaczenia – zarówno dla tworzenia aplikacji desktopowych jak i internetowych. Obecnie wersja ta nosi numer 1.6 zaś suffix SE jest dodawany po to, aby odróżnić tę wersję od pozostałych (o tych dalej). Należy także wspomnieć o numeracji – wersja 1.2 języka Java przyniosła tak duże zmiany, że zaczęto nazywać tę wersję (i późniejsze również) wersją numer 2. Znalazło to nawet nazewnictwo w książkach – jak choćby “Core 2 Java” (2 tomy). Jednakże od wersji 1.6 zrezygnowano z tego i dziś należy mówić o Javie SE (Standard Edition) w wersji 1.6.
  • Java ME – jest to wersja Javy przeznaczona dla urządzeń w domyśle małych (ME to inaczej Micro Edition). Tutaj mowa przede wszystkim o komórkach, ale też o wszystkich innych urządzeniach mobilnych, w których potrzebna jest funkcjonalność Javy.
  • Java EE – to jest to co tygrysy lubią najbardziej. Jest to Enterprise Edition, czyli rozwiązanie przeznaczone na potężne serwery internetowe. Zawiera w sobie wszystko to, co posiada wersja SE, ale też masę innych bibliotek, które umożliwiają tworzenie oprogramowania dla serwerów.

Sam język programowania Java nie zdziała nic wielkiego (no może poza konsolowymi wprawkami). To co przesądza o jego potędze to technologie, które zostały na nim oparte, a dziś są one podstawą dla tworzenia aplikacji zarówno desktopowych, jak i serwerowych. Przedstawię pokrótce ich przegląd:

  • Standardowe aplikacje desktopowe – myślę, że każdemu programiście wystarczy dać na przykład Eclipse IDE by łatwo pojął istotę tychże aplikacji. Język Java jest tutaj podstawą, zaś do konstruowania wymyślnego GUI używa się bibliotek graficznych, np. SWT, czy Swing. Dzięki tym bibliotekom można tworzyć bardzo rozbudowane aplikacje uruchamiane niezależnie od platformy.
  • Aplety – aplet to taka ‘przeglądarkojavascriptowa’ konstrukcja języka Java. By jednakże być bardziej konkretnym wystarczy wspomnieć, iż applet jest kodem języka Java, który jest najczęściej osadzany na stronach WWW, skąd jest pobierany do klienta i wykonywany po jego stronie. Przypomina to technologię Flash i zasadniczo niewiele się od niej różni. By uruchomić aplet na komputerze klienta musi być zainstalowana wirtualna maszyna. Najczęstszym użyciem apletów jest osadzanie na stronach WWW małych, ale jednocześnie dość skomplikowanych aplikacji (np. czaty czy klienty IRCa).
  • Servlety – w odróżnieniu od apletów są to porcje kodu Javy wykonywane po stronie serwera. Są one podstawą dla technologii Java Server Pages (czegoś na kształt PHP). O technologii tej będę jeszcze pewnie nie raz pisał, gdyż naukę Javy przeprowadzam równolegle z klepaniem kodu w JSP. Tutaj tylko pragnę zaznaczyć, że nie można utożsamiać serwletów z JSP! Są to dwie oddzielne rzeczy, które choć występują razem, po części (przynajmniej serwlet) mogą istnieć niezależnie.

Wiemy już zatem co i jak z wersjami Javy, wiemy w jakich postaciach pisze się programy w tym języku, teraz czas na rozjaśnienie kilku magicznych słów, które przewijają się na stronach poświęconych Javie, a na poczatku niekoniecznie muszą być zrozumiałe dla noobów:

  • Serwery aplikacji – podobnie jak kod PHP nie da się uruchomić ot tak na zawołanie, również i w większości przypadków kod Javy wykonywany po stronie serwera, musi być uruchomiony pod auspicjami przeznaczonego do tego serwera aplikacji. Tutaj można wyróżnić dwie kategorie – pierwszą z nich są tzw. kontenery serwletów. Służą one zgodnie z nazwą do uruchamiania serwletów. Innymi zaś słowy – jest to serwer WWW, który umożliwia dostęp do aplikacji napisanych w formie serwletów lub opartej na JSP. Najpopularniejszym tego typu rozwiązaniem jest Apache Tomcat. Drugą kategorią są serwery aplikacji ‘pełną gębą’, takie jak JBoss, lub też WebSphere (płatny). Dają one dostęp do pełnej funkcjonalności platformy Java EE, ale też umożliwiają uruchamianie serwletów.
  • JavaServerPages – o tej technologii wspomniałem już wcześniej przy okazji omawiania serwletów. Otóż JSP jest technologią, która opiera się na wzorcu MVC, gdzie kontrolerem są serwlety, modele to zwykłe klasy języka Java, zaś za tworzenie widoku odpowiada właśnie JSP. Można powiedzieć, że kiedy używa się PHP z Symfony czy Zend Framework to zasadniczo robi się to samo co JSP tylko w troszkę innej technologii. W przypadku JSP jednakże, jest to zaledwie podstawa – działanie wspierające tworzenie aplikacji internetowych w tej technologii dają frameworki języka Java – Java Server Faces lub Struts (by wymienić te najpopularniejsze).
  • Enterpreise JavaBeans – ‘fasolki’ lub ‘ziarna’ jak się o nich mówi to zasadniczo coś na kształt serwletów, z tym tylko, że do uruchomienia potrzebują pełnego serwera aplikacji (kontenera EJB). Są one jednym z elementów składowych (jeśli tak to można nazwać) korporacyjnej wersji Javy. Alternatywą dla tej technologii jest jej podobna – Spring Framework, który jest mniej rygorystyczny oraz o wiele ‘lżejszy’ od ziarenek.
  • Ant, Maven – są to narzędzia do zautomatyzowanego budowania projektów. Dają dużo możliwości konfiguracji, a według opinii na necie dzięki temu javowcy wciąż mają włosy na głowach. Póki co nie miałem okazji korzystać, gdyż od tego mam IDE NetBeans, ale pewnikiem zaniedługo trzeba się będzie ogarnąć w tym temacie.

Mam nadzieję, że powyższe informacje pozwolą na systematyzację wiedzy dotyczącą języka Java, a co za tym idzie dadzą zarys planu nauki oraz kierunku rozwoju.

Advertisements

3 thoughts on “Java – czyli co z czym i dlaczego

  1. Jarek Bolo

    Jeśli chodzi o wymienione rodzaje Javy to trochę zrobiłeś to po łebkach, ale spox, sam tylko trochę to doprecyzuje 🙂
    Czytałem gdzieś kiedyś o całych tych rodzajach Javy i poniżej zapodam to co mi się udało zapamiętać.
    Po pierwsze to kolejność powinna być taka:
    Java ME
    Java SE
    Java EE

    I teraz ta kolejność wynika wprost z wersji języka oraz możliwości obliczeniowych różnych procesorów w różnych urządzeniach.

    I teraz nie do końca pamiętam, które wersje odpowiadają poszczególnym edycjom, ale nie o to chodzi, chodzi o pokazanie mniej więcej jak to było, więc nie przywiązujcie uwagi do numerków, bo użyje ich tylko poglądowo.
    A więc, Java ME jest po prostu Javą zamrożoną gdzieś na powiedzmy wersji 1.0, wersja jeden zero miała podstawowe pakiety, bez cudów, które wymagały by dużych pamięci i mocy obliczeniowych.
    Język Java rozwijał się dochodziły nowe możliwości i pakiety, dołożono m.in. bibliotekę Swing, itd. To już było za ciężkie na małe urządzenia, aby zrobić jasny rozdział nadano temu nazwę Standard Edition.
    No i na koniec doszedł Enterprise Edition, tutaj już szczegółów nie znam, co spowodowało, że zdecydowano się odróżnić go od SE 🙂
    Po szczegóły do google 😛

  2. chlebik Post author

    Oj oczywiście nie było moim celem tworzenie na ten temat elaboratów 🙂 Chodziło o proste rozróżnienie tych typów bo mętlik na początku jest dość duży.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s