Encyklopedia w MarkpolReklama:Java jest obiektowym językiem programowania stworzonym przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems. Java jest językiem kompilowanym do postaci wykonywanej przez maszynę wirtualną i silnie typowanym. Jej podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, garbage collection) 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 ma niewiele wspólnego (głównie składnię podstawowych instrukcji). Główne koncepcjeAutorzy języka Java określili kilkanaście kluczowych koncepcji swojego języka. Najważniejsze z nich to:ObiektowośćW przeciwieństwie do C++ (który jest dodatkiem do proceduralnego języka C), w Javie obiektowość jest zaimplementowana od podstaw. 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 posiada określone zachowania, które mogą zmieniać te stany bądź przesyłać dane do innych obiektów. // oznacza komentarz // w tej postaci to obiekt reprezentujący kolorowy punkt :) public class Figura { // właściwości (atrybuty/pola) private float środekX; private float środekY; private kolor; // operacje (metody) public float obliczPole(){ return 0f; } public float obliczObwód(){ return 0f; } public void wyświetl(){...} ... } Jak widać z powyższego, silne typowanie oznacza, że każda wprowadzana zmienna czy pole musi mieć przypisany typ danych jaki przechowuje (float oznacza typ zmiennoprzecinkowy) a każda metoda musi deklarować jakiego typu dane zwraca (lub void jeśli nic nie zwraca). Z przykładu widać też, że w nazwach zmiennych i metod można używać polskich liter - to zasługa wbudowanej obsługi Unicode. Pokazany w nazwach zmiennych i metod standard kodowania (polegający na pisaniu słów bez spacji a z kapitalizowaniem drugiego i następnych słów składowych) jest nieobowiązkowy, ale jest jedną z dobrych praktyk przy programowaniu w Javie
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 czemu wszystkie posiadają wspólny podzbiór podstawowych możliwości takich jak ich identyfikacja, porównywanie, kopiowanie, niszczenie czy wsparcie dla programowania współbieżnego.
// "extends" oznacza dziedziczenie po klasie Figura pól: środekX, środekY i kolor
// oraz metod: obliczPole, obliczObwód i wyświetl
public class Kwadrat extends Figura {
// dodatkowe atrybuty
private float wierzchołekX;
private float wierzchołekY;
private float długośćBoku;
// "przeładowujemy" operacje rodzica, dzięki czemu dla każdej zdefiniowanej Figury
// można policzyć pole czy obwód
public float obliczPole(){
return długośćBokuNiezależność od architekturyTę właściwość Java posiada dzięki temu, że kod źródłowy programów pisanych w Javie kompiluje się do kodu pośredniego (tzw. bytecode). Powstały kod jest niezależny od systemu operacyjnego a wykonuje go tzw. maszyna wirtualna, która (między innymi) tłumaczy kod uniwersalny na kod dostosowany do specyfiki konkretnego systemu operacyjnego. W tej chwili wirtualna maszyna Javy jest już dostępna dla większości systemów operacyjnych. Jednak z uwagi na to, że kod posredni jest interpretowany, taki system jest wolniejszy niż kompilacja do kodu maszynowego. Z tego względu maszynę wirtualną często uzupełnia się o kompilator JIT. Istnieją również niezależne od Suna kompilatory Javy - przykładem podprojekt gcc o nazwie GCJ. W rezultacie powstaje szybszy kod, ale który można uruchamiać na jednej tylko platformie, a więc nieprzenośny.Sieciowość i obsługa programowania rozproszonegoDzię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, WebServices). Inne biblioteki udostępniają możliwość pisania aplikacji uruchamianych w przeglądarkach internetowych (aplety) oraz aplikacji działających ciągle po stronie serwera (serwlety).Niezawodność i bezpieczeństwoW zamierzeniu Java miała zastąpić C++ - obiektową nakładkę na język C. Jej projektanci zaczęli od rozpoznania cech języka C++, które są przyczyną największej ilości 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 posiada system wyjątków czyli sytuacji, gdy kod programu natrafia na nieprzewidywane trudności, takie jak np.:Dystrybucje języka JavaPakietyJava nie jest monolitem, lecz składa się z szeregu klas definiujących obiekty różnego typu. Dla przejrzystości klasy te pogrupowane są w hierarchicznie ułożone pakiety. Każdy pakiet grupuje klasy związane z pewnym szerokim zakresem zastosowań języka np. java.io (klasy wejścia-wyjścia), java.util.prefs (klasy użytkowe do obsługi preferencji) czy java.awt (system obsługi trybu graficznego). Hierarchię klas oddają nazwy pakietów, które skonstruowane są podobnie jak ścieżki dostępu do plików. Na przykład klasa Preferences znajdująca się w pakiecie java.util.prefs na pełną nazwę: java.util.prefs.Preferences, co oznacza:JRE a JDKPakiety z hierarchii java i javax (dodatki wprowadzone w późniejszych wersjach) należą do podstawowego zestawu klas rozprowadzanych jako Java. Zestaw ten jest dostępny w dwóch wersjach: JRE (Java Runtime Environment) - udostępnia bytecode wszystkich klas standardowych i wirtualną maszynę do ich uruchamiania, zaś JDK (Java Development Kit) dodatkowo udostępnia źródła tych klas oraz dodatkowe narzędzia takie jak kompilator, paker czy debugger. Podział ten wprowadzono dlatego, że użytkownik Javy do uruchamiania programów potrzebuje tylko JRE, natomiast do programowania działających aplikacji potrzeba już JDK.Implementacje JavyPotocznie pod nazwą Java rozumie się nie tylko język programowania, ale także całe środowisko (JDK) tworzone przez firmę Sun. 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 w standardowej implementacji Suna. 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.Chcesz wypromować swoją stronę w internecie?? - nie zwlekaj pozycjonowanie w Luman.biz to rozsądny wybór |
|