• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Java



    Podstrony: [1] 2 [3] [4] [5]
    Przeczytaj także...
    Java Platform, Micro Edition lub Java ME (znana wcześniej jako Java 2 Platform, Micro Edition lub J2ME) – specyfikacja opracowana przez firmę Sun Microsystems opisująca uproszczoną wersję platformy Java. Platforma Java ME została zaprojektowana z myślą o tworzeniu aplikacji mobilnych dla urządzeń o bardzo ograniczonych zasobach, takich jak telefony komórkowe lub palmtopy. Ze względu na ograniczenia techniczne takich urządzeń, tj. wolniejsze procesory, mniejszą pamięć, Java ME posiada swój własny, okrojony w stosunku do Java SE zbiór klas zwanych konfiguracją (ang. configuration). Konfiguracje są uzupełniane przez profile (ang. profiles) dodające do istniejących klas swoje własne klasy zapewniające wykonywanie określonych zadań na konkretnych urządzeniach. Profile mogą natomiast być wzbogacone o pakiety opcjonalne (ang. Optional Packages). Taka różnorodność API (Application Programming Interface) daje projektantom i programistom dużą elastyczność w tworzeniu oprogramowania dla urządzeń wyposażonych w różne konfiguracje sprzętowe. Środowisko Java ME posiada także w zależności od wybranej konfiguracji swoje własne maszyny wirtualne.Kod bajtowy (ang. bytecode) – nazwa reprezentacji kodu używanej przez maszyny wirtualne oraz przez niektóre kompilatory. Kod składa się z ciągu instrukcji (których kody operacji mają zwykle długość jednego bajta, stąd nazwa), które nie odpowiadają bezpośrednio instrukcjom procesora i mogą zawierać instrukcje wysokiego poziomu (takie jak np. stwórz obiekt klasy X, połącz dwa łańcuchy itd.), jednak w przeciwieństwie do kodu źródłowego wymagają analizy tylko pojedynczych poszczególnych operacji.
    Główne koncepcje[]

    Autorzy języka Java określili kilkanaście kluczowych koncepcji swojego języka. Najważniejsze z nich to:

    Obiektowość[]

    W przeciwieństwie do wieloparadygmatowego języka C++, Java jest silnie ukierunkowana na programowanie obiektowe. Wyjątkiem od całkowitej obiektowości (jak np. w Smalltalku) są typy proste (int, float itp.).

    // oznacza komentarz
    // w tej postaci to obiekt reprezentujący kolorowy punkt
    public class Figura
    {
        // operacje (metody)
        public float obliczPole()
        {
            return 0;
        }
        
        public float obliczObwód()
        {
            return 0;
        }
        
        public void wyświetl() { ... }
        
        // właściwości (atrybuty/pola)
        private float środekX;
        private float środekY;
        private int kolor; // tak naprawdę do przechowywania(tworzenia)
                           // koloru używa się zazwyczaj obiektu java.awt.Color
        ...
    }
    
    Jak widać z powyższego, statyczne typowanie oznacza, że każda wprowadzana zmienna czy pole musi mieć przypisany typ przechowywanych w niej danych (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 kodowania 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 uznanych za dobre praktyk programowania w Javie

    Dziedziczenie[]

    W Javie wszystkie obiekty są instancjami klasy Object, z której 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.

    Javapedia jest projektem internetowym opartym o wiki bezpośrednio zainspirowanym przez Wikipedię, którego celem jest stworzenie sieciowej encyklopedii obejmującej wszelkie aspekty platformy programowej Java. Przedsięwzięcie to zostało zapoczątkowane w czerwcu 2003 roku podczas konferencji programistycznej JavaOne. Jest ono częścią portalu java.net, który jest promowany przez firmę Sun Microsystems jako główne miejsce kontaktów dla światowej społeczności związanej z Javą.W programowaniu asercja (ang. assertion) to predykat (forma zdaniowa w danym języku, która zwraca prawdę lub fałsz), umieszczony w pewnym miejscu w kodzie. Asercja wskazuje, że programista zakłada, że predykat ów jest w danym miejscu prawdziwy. W przypadku gdy predykat jest fałszywy (czyli nie spełnione są warunki postawione przez programistę) asercja powoduje przerwanie wykonania programu. Asercja ma szczególne zastosowanie w trakcie testowania tworzonego oprogramowania, np. dla sprawdzenia luk lub jego odporności na błędy. Zaletą stosowania asercji jest możliwość sprawdzenia, w którym fragmencie kodu źródłowego programu nastąpił błąd.
    // „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;
    
        // „przesłaniamy” operacje rodzica, dzięki czemu dla każdej zdefiniowanej Figury
        // można policzyć pole czy obwód
        @Override
        public float obliczPole()
        {
            return długośćBoku*długośćBoku;
        }
        ...
    }
    

    Choć C++ udostępniał dziedziczenie wielokrotne, projektanci Javy odeszli od tego pomysłu. Java umożliwia jedynie dziedziczenie po jednej klasie, a więc wyłącznie jedna klasa może przekazać swoje właściwości i operacje jako podstawę do rozszerzania ich o dodatkowe możliwości. Dzięki temu wyeliminowano możliwość konfliktów między właściwościami przekazywanymi przez klasy nadrzędne.

    URL (ang. Uniform Resource Locator) – oznacza ujednolicony format adresowania zasobów (informacji, danych, usług) stosowany w Internecie i w sieciach lokalnych.SableVM to implementacja interpretera bytekodu języka Java zgodna ze specyfikacją maszyny wirtualnej języka Java w wersji drugiej.

    By zrekompensować spadek elastyczności wynikający z pojedynczego dziedziczenia wprowadzono interfejsy oraz podklasy umożliwiające wielokrotne dziedziczenie implementacji. Pozwalają one nazwać pewien określony zbiór operacji, dzięki czemu można określić, że dany obiekt, któremu przypisano dany interfejs (implementujący go), umożliwia wykonanie owego zestawu operacji.

    Komputer osobisty (ang. personal computer) – mikrokomputer przeznaczony przede wszystkim do użytku osobistego w domu i biurze. Służy głównie do uruchamiania oprogramowania biurowego, dostępu do zasobów Internetu, prezentacji treści multimedialnych (tekst, obrazy, dźwięki, filmy i inne), jak i gier.Kompresja danych (ang. data compression) – polega na zmianie sposobu zapisu informacji tak, aby zmniejszyć redundancję i tym samym objętość zbioru. Innymi słowy chodzi o wyrażenie tego samego zestawu informacji, lecz za pomocą mniejszej liczby bitów.

    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.

    Plik (ang. file) – uporządkowany zbiór danych o skończonej długości, posiadający szereg atrybutów i stanowiący dla użytkownika systemu operacyjnego całość. Nazwa pliku nie jest częścią tego pliku, lecz jest przechowywana w systemie plików.Programowanie wieloparadygmatowe - paradygmat programowania a w szczególności tworzenia języków programowania, który mówi że jeden paradygmat nadaje się lepiej do pewnych typów zadań, inny zaś do innych, lepiej jest przyzwoicie zaimplementować kilka różnych paradygmatów i dowolnie je mieszać w użyciu, niż zaimplementować tylko jeden (choć lepiej niż robiłby to język wieloparadygmatowy), i próbować go narzucać.

    Jednak z uwagi na to, że kod pośredni jest interpretowany, taki program jest wolniejszy niż kompilowany 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.

    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.

    Przetwarzanie współbieżne (ang. concurrent computing) – przetwarzanie oparte na współistnieniu wielu wątków lub procesów, operujących na współdzielonych danych. Wątki uruchomione na tym samym procesorze są przełączane w krótkich przedziałach czasu, co sprawia wrażenie, że wykonują się równolegle.C# (C Sharp, dosłownie "C-krzyżyk", "cis") – obiektowy język programowania zaprojektowany przez zespół pod kierunkiem Andersa Hejlsberga dla firmy Microsoft.

    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).

    Eclipse – platforma (framework) napisana w 2004 roku w Javie do tworzenia aplikacji typu rich client. Na bazie Eclipse powstało zintegrowane środowisko programistyczne do tworzenia programów w Javie, które jest razem z tą platformą rozpowszechniane.Java Development Kit (JDK) – darmowe oprogramowanie firmy Sun Microsystems (będący własnością Oracle Corporation) udostępniające środowisko niezbędne do programowania w języku Java. Produkt dostępny jest dla wielu systemów operacyjnych – najpopularniejsze wersje są dla systemów Solaris, Linux i Microsoft Windows.

    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, takie jak np.:

    Embarcadero Delphi – nazwa środowiska programistycznego rozwijanego obecnie przez firmę Embarcadero (środowisko zostało stworzone w 1995 roku przez firmę Borland jako Borland Delphi).Tablica w informatyce to kontener danych dostępnych, w którym poszczególne komórki dostępne są za pomocą kluczy, które najczęściej przyjmują wartości numeryczne. Rozmiar tablicy jest albo ustalony z góry (tablice statyczne), albo może się zmieniać w trakcie wykonywania programu (tablice dynamiczne).
  • operacje na elemencie poza zadeklarowaną granicą tablicy lub elemencie pustym,
  • czytanie z niedostępnego pliku lub nieprawidłowego adresu URL,
  • podanie nieprawidłowych danych przez użytkownika.
  • W Javie obsługa wyjątków jest obowiązkowa (programista ma możliwość wywołania wyjątku throw, jednak musi dodać do danej metody deklarację throws lub otoczyć kod narażony na wystąpienie wyjątku blokiem try{...} catch{...}; nie jest to wymagane w przypadku obiektów wyjątków dziedziczących po klasie RuntimeException lub Error). Przy tym obiekty wchodzące w skład pakietu standardowego Javy implementują wyjątki w każdym miejscu kodu, którego wykonanie jest niepewne ze względu na okoliczności zewnętrzne.

    Java Platform, Enterprise Edition (zwana również jako Java Enterprise, J2EE oraz Java EE czasami tłumaczona jako Java Korporacyjna) jest szeroko rozpowszechnioną serwerową platformą programistyczną języka Java. Definiuje standard tworzenia aplikacji w języku programowania Java opartych o wielowarstwową architekturę komponentową. Komponenty są zwykle osadzane na serwerze aplikacyjnym obsługującym Java Enterprise. Standard ten określa zestaw interfejsów programistycznych jakich musi dostarczać zgodny serwer aplikacyjny.Java SE (Java Platform, Standard Edition znane wcześniej jako J2SE) – specyfikacja opracowana przez firmę Sun Microsystems opisująca podstawową wersję platformy Java. Pozwala tworzyć i uruchamiać aplikacje napisane w języku Java na komputerach stacjonarnych i serwerach. Java SE zawiera klasy pozwalające tworzyć aplikacje WWW. Stanowi podstawę dla Java EE (Java Platform, Enterprise Edition).

    Sama obsługa wyjątków polega na napisaniu kodu, który wykona się w odpowiedzi na taką sytuację nadzwyczajną. Może to być np. podstawienie wartości domyślnej przy natrafieniu na nieprawidłową wartość parametru, zaniechanie danej akcji i powrót do stanu stabilnego czy choćby zapisanie pracy przed wyjściem. W sytuacji wyjątkowej program przerywa normalne wykonanie i tworzy specjalny obiekt wyjątku odpowiedniej klasy, który „wyrzuca” z normalnego biegu programu. Następnie zdefiniowany przez użytkownika kod „łapie” ten obiekt wyjątku i podejmuje odpowiednie działanie. Działanie może być dwojakiego typu: wspomniane wyżej środki zaradcze lub odrzucenie takiego „śmierdzącego jaja” dalej, do bloku programu, który nakazał wykonanie wadliwej operacji. Takie podawanie sobie wyjątku może być wieloetapowe i jeśli skończy się w bloku głównym programu powoduje jego przerwanie i ogłoszenie błędu krytycznego.

    JavaFX Script - skryptowy język programowania przeznaczony do tworzenia Rich Internet Application uruchamianych na wirtualnej maszynie Javy. Wchodzi w skład rodziny JavaFX. JavaFX Script ma w założeniu stać sie konkurentem dla Adobe Flash i Flex, technologii AJAX oraz Microsoft Silverlight.Adobe Flash (dawniej Macromedia Flash) – program komputerowy, technologia tworzenia animacji z wykorzystaniem grafiki wektorowej na zasadzie klatek kluczowych. Powstałe pliki .swf, zwane często "plikami Flash" można odtwarzać na stronie za pomocą przeglądarki internetowej z zainstalowaną odpowiednią wtyczką (np. Adobe Flash Player) lub w oddzielnym programie do tego przeznaczonym. Od wersji Flash 5, program wyposażony został w język programowania do obsługi zdarzeń (np. kliknięcie elementu myszą) – ActionScript. Dzięki temu we Flashu można tworzyć interaktywne animacje i programy, np. popularne w sieci WWW gry Flash. Oprócz tego, pliki Flash są wykorzystywane do internetowych reklam i prezentacji. Istnieją również strony internetowe całkowicie oparte na plikach Flash.

    Oprócz systemu wyjątków Java od wersji 1.4 ma dwa inne systemy wspomagające pisanie niezawodnych programów: logowanie i asercje. Pierwsze pozwalają na zapisanie w plikach dziennika przebiegu działania programu, z dodatkową możliwością filtrowania zawartości, określenia poziomu logowanych błędów itp. Drugie rozwiązanie pozwala na upewnienie się, że pewne założenia co do określonych wyrażeń (np. że liczba, z której wyciągamy pierwiastek jest nieujemna) są prawdziwe. Asercje są o tyle ciekawe, że działają tylko z odpowiednią opcją wykonania programu, dzięki czemu programista może sprawdzić działanie programu, a później bez wysiłku spowodować pominięcie testowej części kodu po prostu przez ominięcie tej opcji.

    Domena internetowa – zbiór nazw systemu nazw DNS wykorzystywanego w Internecie, składający się z nazw umieszczonych w pewnym poddrzewie struktury DNS tj. zakończonych stałym sufiksem (np. ".wikipedia.org").Silna typizacja to system typów w języku programowania, w którym każde wyrażenie ma ustalony typ i nie można go używać w kontekście przeznaczonym dla innych typów.

    Krytyka i kontrowersje[]

    Język Java, pomimo swoich wielu zalet, ma wiele wad, w tym takie, które wzbudzają liczne kontrowersje:

  • Najczęściej wymienianą wadą języka Java jest to, że programy pisane w Javie wykonują się wolniej niż programy pisane w językach natywnie kompilowanych (np. C++). Zarzut ten odnosi się szczególnie do starych wersji Javy, kiedy zaawansowane mechanizmy takie jak JIT albo współbieżne odśmiecanie pamięci nie były dostępne.
  • Javie zarzuca się, że niezbyt dobrze nadaje się do zastosowań czasu rzeczywistego. Głównym problemem jest brak przewidywalności wydajności oraz nieoczekiwane przestoje powodowane działaniem odśmiecacza. W nowych wersjach Javy ten drugi problem został radykalnie ograniczony, jednak nadal do zastosowań czasu rzeczywistego lepiej stosować języki natywnie kompilowane.
  • Często Javie zarzucane jest to, że ma mniejszą funkcjonalność niż np. C++, co ogranicza programistę. Jako przykład przywołuje się czasami fakt, że aby uruchomić niewielki program, trzeba napisać dłuższy kod programu. Niektórzy jednak zwracają uwagę, że również język C++ nie ma wielu elementów, które można znaleźć w Javie, jak np. klasy anonimowe, odśmiecacz pamięci, system pakietów, dynamiczne ładowanie klas czy reflection API.
  • Java wymusza konwersję typów prostych (np. int) na odpowiadający typ referencyjny (np. java.lang.Integer) przy pracy z kolekcjami, co może mieć negatywny wpływ na wydajność w specyficznych sytuacjach i zmniejsza czytelność programu. Typy generyczne, wprowadzone w wersji 5, oraz tzw. autoboxing, czyli automatyczna konwersja pomiędzy typami prostymi i ich obiektowymi odpowiednikami usunęły problem czytelności. Programista może już także wybrać, jakim algorytmem zostanie zaimplementowana dana kolekcja (np. lista może być zaimplementowana jako tablica o zmiennym rozmiarze, drzewo, albo lista jednokierunkowa), co pozwala na poprawienie wydajności.
  • FTP, protokół transferu plików (ang. File Transfer Protocol) – protokół komunikacyjny typu klient-serwer wykorzystujący protokół TCP według modelu TCP/IP (krótko: połączenie TCP), umożliwiający dwukierunkowy transfer plików w układzie serwer FTP–klient FTP.Apache Ant to narzędzie służące do zautomatyzowania procesu budowy oprogramowania. Podobne do programu Make ale napisane w języku Java do wykorzystania przede wszystkim z programami napisanymi w tym języku.


    Podstrony: [1] 2 [3] [4] [5]



    w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    Definicja intuicyjna: Kod źródłowy to zapis programu komputerowego w formie czytelnej dla człowieka umożliwiający jego modyfikację i rozwój.
    W programowaniu obiektowym interfejs jest definicją abstrakcyjnego typu posiadającego jedynie operacje, a nie dane. Kiedy w konkretnej klasie zdefiniowane są wszystkie metody interfejsu mówimy, że klasa implementuje dany interfejs. W programie mogą być tworzone zmienne typu referencja do interfejsu, nie można natomiast tworzyć obiektów tego typu. Referencja może wskazywać na obiekt dowolnej klasy implementującej dany interfejs. Interfejs określa udostępniane operacje, nie zawiera natomiast ich implementacji i danych. Z tego powodu klasy mogą implementować wiele interfejsów, bez problemów wynikających z wielokrotnego dziedziczenia. Wszystkie metody w interfejsie z reguły muszą być publiczne.
    NetBeans – projekt otwartego oprogramowania mający za zadanie dostarczanie efektywnych narzędzi programowania. Dwa najważniejsze produkty to NetBeans IDE oraz NetBeans Platform.
    System operacyjny (ang. Operating System, skrót OS) – oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań użytkownika.
    Kaffe to niezależna implementacja wirtualnej maszyny Javy rozwijana w latach 1996-2008. Nazwa pochodzi z języka szwedzkiego i oznacza kawę.
    Oracle Corporation NASDAQ: ORCL – amerykańskie przedsiębiorstwo zajmujące się tworzeniem oprogramowania do szeroko rozumianej obsługi przedsiębiorstw, a w szczególności systemów zarządzania bazą danych (zobacz: baza danych Oracle). Oracle jest trzecim pod względem przychodów sprzedawcą oprogramowania na świecie po firmach Microsoft i IBM.
    Unicode – komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma używane na świecie. Definiują go dwa standardy – Unicode oraz ISO 10646. Znaki obu standardów są identyczne. Standardy te różnią się w drobnych kwestiach, m.in. Unicode określa sposób składu.

    Reklama

    Czas generowania strony: 0.059 sek.