up
tel.: +48 720 834 416

ques_markOur Technologies

Best technologies. Effective development

Java

 

Java – obiektowy język programowania stworzony przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems. Java jest językiem tworzenia programów źródłowych kompilowanych do kodu bajtowego, czyli postaci wykonywanej przez maszynę wirtualną. Język cechuje się silnym typowaniem. Jego podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, zarządzanie pamięcią) oraz z języka C++ (duża część składni i słów kluczowych).

 

Javy nie należy mylić ze skryptowym językiem JavaScript, z którym wspólną ma jedynie składnię podstawowych instrukcji.

 

Główne koncepcje:

  • Obiektowość - w przeciwieństwie do proceduralno-obiektowego języka C++, Java jest silnie ukierunkowana na obiektowość. Wszelkie dane i akcje na nich podejmowane są pogrupowane w klasy obiektów. O obiekcie można myśleć jako o samoistnej części programu, która może przyjmować określone stany i ma określone zachowania, które mogą zmieniać te stany bądź przesyłać dane do innych obiektów.
  • Dziedziczenie - w Javie wszystkie obiekty są pochodną obiektu nadrzędnego (jego klasa nazywa się po prostu Object), z którego dziedziczą podstawowe zachowania i właściwości. Dzięki temu wszystkie mają wspólny podzbiór podstawowych możliwości, takich jak ich: identyfikacja, porównywanie, kopiowanie, niszczenie czy wsparcie dla programowania współbieżnego.
  • Niezależność od architektury - tę właściwość Java ma dzięki temu, że kod źródłowy programów pisanych w Javie kompiluje się do kodu pośredniego. Powstały kod jest niezależny od systemu operacyjnego i procesora, a wykonuje go tzw. wirtualna maszyna Javy, która (między innymi) tłumaczy kod uniwersalny na kod dostosowany do specyfiki konkretnego systemu operacyjnego i procesora. W tej chwili wirtualna maszyna Javy jest już dostępna dla większości systemów operacyjnych i procesorów.
  • Sieciowość i obsługa programowania rozproszonego - Dzięki wykorzystaniu reguł obiektowości, Java nie widzi różnicy między danymi płynącymi z pliku lokalnego a danymi z pliku dostępnego przez HTTP czy FTP. Biblioteki Javy udostępniają wyspecjalizowane funkcje umożliwiające programowanie rozproszone – zarówno między aplikacjami Javy (RMI), jak i między aplikacją Javy a aplikacjami napisanymi w innych językach (CORBA, usługi sieciowe). Inne biblioteki udostępniają możliwość pisania aplikacji uruchamianych w przeglądarkach internetowych (aplety Javy) oraz aplikacji działających ciągle po stronie serwera (serwlety).
  • Niezawodność i bezpieczeństwo - W zamierzeniu Java miała zastąpić C++ – obiektowego następcę języka C. Jej projektanci zaczęli od rozpoznania tych cech języka C++, które są przyczyną największej liczby błędów programistycznych, by stworzyć język prosty w użyciu, bezpieczny i niezawodny. O ile po pięciu odsłonach Javy jej prostota jest dyskusyjna, o tyle język faktycznie robi dużo, by utrudnić programiście popełnienie błędu. Przede wszystkim Java ma system wyjątków, czyli sytuacji, gdy kod programu natrafia na nieprzewidywane trudności.

 

Potocznie pod nazwą Java rozumie się nie tylko język programowania, ale także całe środowisko (JDK) stworzone przez firmę Sun, a którego obecnym właścicielem jest Oracle Corporation. Z tego uogólnienia wynikają pewne nieścisłości, jak np. to, że Java jest niezależna od architektury – nie jest to jednak cecha samego języka, a mechanizmu wirtualnej maszyny wykorzystywanego tej w standardowej implementacji.

 

Swoją własną implementację JDK, certyfikowaną w ramach Java Community Process, tworzy na przykład IBM, a na bazie kodu oryginalnej implementacji powstaje przeznaczona dla Linuksa Blackdown Java.

 

Istnieją też projekty odtworzenia poszczególnych elementów środowiska. Wśród nich są wirtualne maszyny Javy tworzone przez społeczność FLOSS SableVM i Kaffe, doświadczalny IBM-owski kompilator Jikes, czy optymalizowany pod względem szybkości dla architektur Intela JRockit, autorstwa firmy BEA. Najczęściej wykorzystują one bibliotekę standardowych klas rozwijaną w ramach projektu GNU Classpath.

 

Inne podejście prezentuje projekt GCJ, który pozwala kompilować programy w Javie bezpośrednio do kodu maszynowego.