DZWONEK

Są tacy, którzy czytają te wiadomości przed tobą.
Subskrybuj, aby otrzymywać świeże artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać Dzwon
Bez spamu

Ostatnia aktualizacja: 15.04.2018

Obecnie język Java jest jednym z najpopularniejszych i najpopularniejszych języków programowania. Pierwsza wersja języka pojawiła się w 1996 roku w trzewiach Sun Microsystems, a następnie nabytych przez Oracle. Java została pomyślana jako uniwersalny język programowania, którego można używać do różnego rodzaju zadań. Do tej pory Java przeszła długą drogę; opublikowano wiele różnych wersji. Obecna wersja to Java 12, która została wydana w marcu 2019 r. Java przekształciła się z uniwersalnego języka w platformę i ekosystem, który łączy różne technologie wykorzystywane w wielu zadaniach: od tworzenia aplikacji komputerowych po pisanie dużych portali i usług internetowych. Ponadto język Java jest aktywnie wykorzystywany do tworzenia oprogramowania dla wielu urządzeń: zwykłych komputerów, tabletów, smartfonów i telefony komórkowe a nawet urządzenia gospodarstwa domowego. Wystarczy przypomnieć popularność mobilnego systemu operacyjnego Android, dla którego większość programów jest napisana specjalnie w Javie.

Funkcje Java

Kluczową cechą języka Java jest to, że jego kod jest najpierw tłumaczony na specjalny niezależny od platformy kod bajtowy. Następnie ten kod bajtowy jest wykonywany przez maszynę wirtualną Java (JVM). Pod tym względem Java różni się od standardowych języków interpretowanych, takich jak PHP czy Perl, których kod jest natychmiast wykonywany przez tłumacza. Jednocześnie Java nie jest językiem czysto skompilowanym, takim jak C lub C ++.

Taka architektura zapewnia międzyplatformową i sprzętową przenośność programów Java, dzięki czemu takie programy można uruchamiać bez ponownej kompilacji na różnych platformach - Windows, Linux, Mac OS itp. Każda platforma może mieć własną implementację maszyny wirtualnej JVM, ale każda z nich może wykonywać ten sam kod.

Java jest językiem o składni podobnej do C i pod tym względem jest zbliżona do C / C ++ i C #. Dlatego jeśli znasz jeden z tych języków, opanowanie języka Java będzie łatwiejsze.

Inną kluczową cechą Javy jest to, że obsługuje automatyczne zbieranie śmieci. Oznacza to, że nie trzeba ręcznie zwalniać pamięci z wcześniej używanych obiektów, jak w C ++, ponieważ moduł czyszczenia pamięci zrobi to automatycznie.

Java jest językiem obiektowym. Obsługuje polimorfizm, dziedziczenie, pisanie statyczne. Podejście obiektowe pozwala rozwiązać problem budowy dużych, ale jednocześnie elastycznych, skalowalnych i rozszerzalnych aplikacji.

Instalacja Java

Aby programy Java działały, środowisko Java Runtime Environment (JRE) musi być zainstalowane na komputerze docelowym. JRE wprowadza minimalną implementację maszyny wirtualnej, a także bibliotekę klas. Dlatego jeśli chcemy uruchamiać programy, musimy zainstalować środowisko JRE. Każda platforma ma własną wersję JRE.

Ponieważ jednak zamierzamy nie tylko uruchamiać programy, ale także je rozwijać, potrzebujemy specjalnego zestawu programistycznego dla JDK (Java Development Kit). JDK już zawiera JRE, a także zawiera liczbę dodatkowe programy oraz narzędzia, w szczególności kompilator Java.

Możesz pobrać i zainstalować odpowiednią wersję JDK z oficjalnej strony Oracle: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Więc z powyższego adresu pobierz instalator JDK dla najnowszej wersji Java.

Następnie zostaniemy przekierowani na stronę, na której musisz wybrać wersję docelowego systemu operacyjnego - Windows, MacOS lub Linux:

Dla każdego systemu operacyjnego istnieją dwie opcje rozruchu: w postaci instalatora lub w postaci archiwum, którego nie trzeba instalować. Na przykład moim systemem operacyjnym jest Windows, więc pobieram plik jdk_12_windows-x64_bin.exe, który reprezentuje instalator.

Po pobraniu uruchom program instalacyjny:

Kliknij przycisk Dalej. Na następnym ekranie musisz określić, w którym folderze zostanie przeprowadzona instalacja:

Pozostaw domyślny wybór folderu i kliknij Dalej, aby zakończyć instalację.

Po zakończeniu instalacji JDK zobaczymy to okno:

Po zainstalowaniu JDK utwórz pierwszy program Java.

W 1995 roku gigant programowy Sun Microsystems wydał nową platformę o nazwie Java. Zawierał on język programowania i tak zwane środowisko wykonawcze Java lub środowisko wykonawcze dla aplikacji napisanych przy użyciu języka Java. Z kolei środowisko JRE zawierało podstawowy system typów języka Java, maszynę wirtualną, często nazywaną maszyną Java, oraz całą bibliotekę klas pomocniczych.



Oczywiście głównym celem innowacji w tamtych czasach były aplikacje międzyplatformowe, które do czasu pojawienia się Javy były silnie związane z „sprzętem”, do którego były przeznaczone. Java zezwala na uruchamianie aplikacji niezależnie od platformy zainstalowanej na komputerze.

Więcej o Javie

W przeciwieństwie do aplikacji utworzonych na przykład w C, JRE inaczej gromadzi pliki kodu źródłowego dla aplikacji utworzonej przy użyciu języka Java. W wyniku kompilacji aplikacja C przechodzi etap tworzenia tzw. Kodu obiektowego lub kodu maszynowego (etap montażu), z którego linker zbiera plik wykonywalny, który zależy od platformy zainstalowanej na komputerze. Aplikacja napisana przy użyciu języka Java w wyniku procesu kompilacji tworzy tzw. Kod bajtowy, niezależny od środowiska operacyjnego, w którym jest montowany. Jednak aby ten kod bajtowy został złożony na danej platformie w plik wykonywalny, konieczne jest zainstalowanie środowiska wykonawczego JRE na tej platformie. Jest to narzędzie, o które często pytają użytkownicy: „Dlaczego potrzebujemy Java na komputerze?”.


Trochę o popularności programów Java

Nowoczesna Java stała się niemal powszechnie uznanym standardem programistycznym. W tym języku opracowywane są aplikacje sieciowe, gry, oprogramowanie korporacyjne, dobrze znane aplety do przeglądarek internetowych, oprogramowanie wbudowane i mobilne. Według statystyk na świecie Java jest instalowana na 97 procentach komputerów stacjonarnych dla firm. Narzędzia napisane w tym języku są używane w trzech miliardach telefonów komórkowych. Java jest również popularna wśród urządzeń telewizyjnych. Popularność aplikacji tworzonych przy użyciu języka programowania Java jest więc niezaprzeczalna. Powodem tej popularności była możliwość prowadzenia prac rozwojowych w jednym środowisku operacyjnym i uruchamiania utworzonej aplikacji w zupełnie innym. Jest to tak zwana platforma wieloplatformowa, oparta na niezależnym kodzie bajtów, który został omówiony powyżej.


Czy istnieje alternatywa dla Javy?

Przykładem alternatywy dla Java jest platforma .Net innego giganta oprogramowania o nazwie Microsoft. Ma również swój cel międzyplatformowy, dzięki obecności kodu MSIL, który jest analogiem kodu bajtowego Java. Jednak, w przeciwieństwie do Javy, platforma Microsoft jest instalowana tylko dla systemów operacyjnych Windows i dlatego pozostaje zależna od platformy, chociaż próbuje się przenieść tę platformę na inne systemy operacyjne w formie projektu Mono. Ważną zaletą tej platformy jest możliwość jej rozwijania w wielu językach zgodnych z .Net.

Java - Java z mikrosystemów Sun. Został pierwotnie opracowany jako język do programowania urządzeń elektronicznych, ale później stał się używany do pisania aplikacji serwerowych. Programy Java są wieloplatformowe, co oznacza, że \u200b\u200bmogą pracować na dowolnym systemie operacyjnym.

Podstawy programowania w języku Java

Java jako język z obsługą orientacji obiektowej spełnia podstawowe zasady OOP:

  • dziedzictwo;
  • wielopostaciowość;
  • kapsułkowanie.

W centrum „Java”, podobnie jak w innych OOY, znajduje się obiekt i klasa z konstruktorami i właściwościami. Aby rozpocząć naukę języka programowania Java, lepiej nie korzystać z oficjalnych zasobów, ale z samouczków dla początkujących. Takie instrukcje szczegółowo opisują możliwości, podają przykłady kodu. Książki takie jak „Język programowania Java dla początkujących” szczegółowo wyjaśniają podstawowe zasady i cechy tego języka.

funkcje

Kod w języku programowania Java jest tłumaczony na kod bajtowy, a następnie wykonywany na maszynie wirtualnej JVM. Konwersja na kod bajtowy jest wykonywana w Javac, Jikes, Espresso, GCJ. Istnieją kompilatory, które tłumaczą język C na kod bajtowy Java. Dlatego aplikacja C może działać na dowolnej platformie.

Składnia „Java” charakteryzuje się następującymi cechami:

  1. Nazwy klas muszą zaczynać się wielką literą. Jeśli nazwa składa się z kilku słów, drugi powinien zaczynać się od dużej litery.
  2. Jeśli do utworzenia metody użyto kilku słów, drugie z nich powinno zaczynać się wielką literą.
  3. Przetwarzanie rozpoczyna się od metody main () - jest częścią każdego programu.

Rodzaje

Język programowania Java ma 8 podstawowych typów. Są one przedstawione poniżej.

  • Boolean - typ boolowski, przyjmuje tylko dwie wartości true i false.
  • Bajt - najmniejszy typ całkowity 1 bajt. Służy do pracy z surowymi plikami danych binarnych. Ma zakres od -128 do 127.
  • Krótki ma zakres od -32768 do 32767, używany do reprezentowania liczb. Rozmiar zmiennych tego typu wynosi 2 bajty.
  • Int oznacza także liczby, ale jego rozmiar to 4 bajty. Najczęściej jest używany do pracy z danymi liczb całkowitych, a bajty i krótkie czasami zwiększają się do int.
  • Długie są używane dla dużych liczb całkowitych. Możliwe wartości mieszczą się w zakresie od -9223372036854775808 do 9223372036854775807.
  • Float i double są używane do wskazania ułamka. Różnica polega na tym, że funkcja float jest wygodna, gdy nie jest wymagana wysoka precyzja w ułamkowej części liczby.
  • Podwójnie wyświetla wszystkie znaki po separatorze „.”, A liczba zmiennoprzecinkowa - tylko pierwsza.
  • Łańcuch jest najczęściej używanym typem pierwotnym, za pomocą którego określa się łańcuchy.

Klasy i przedmioty

Ważną rolę w książce „Nauka języka programowania Java dla początkujących” odgrywają klasy i przedmioty.

Klasa definiuje szablon dla obiektu; musi mieć atrybuty i metody. Aby go utworzyć, użyj słowa kluczowego Klasa. Jeśli jest utworzony w osobnym pliku, nazwy klas i plików muszą być takie same. Sama nazwa składa się z dwóch części: nazwy i rozszerzenia Java.

W Javie możesz utworzyć podklasę, która odziedziczy metody rodzica. Aby to zrobić, użyj słowa rozciąga się:

  • klasa nazwa_klasy rozszerza nazwę nadklasy ();

Konstruktor jest komponentem dowolnej klasy, nawet jeśli nie jest wyraźnie określony. W takim przypadku kompilator sam go utworzy:

  • public class Class (public Class () () public class (String name) ())

Nazwa konstruktora jest taka sama jak nazwa klasy, domyślnie ma tylko jeden parametr:

  • public Puppy (nazwa łańcucha)

Obiekt jest tworzony z klasy za pomocą operatora new ():

  • Punkt p \u003d nowy punkt ()

Otrzymuje wszystkie metody i właściwości klasy, z którymi współdziała z innymi obiektami. Jeden obiekt może być używany kilka razy pod różnymi zmiennymi.

    Punkt p \u003d nowy punkt ()

    klasa TwoPoints (

    public static void main (Argumenty ciągu) (

    Punkt p1 \u003d nowy punkt ();

    Punkt p2 \u003d nowy punkt ();

    Zmienne obiektowe i obiekty są całkowicie różnymi bytami. Zmienne obiektowe są referencjami. Mogą wskazywać dowolne zmienne nieprymitywnego typu. W przeciwieństwie do C ++, ich konwersja typów jest ściśle regulowana.

    Pola i metody

    Pola to wszystkie zmienne powiązane z klasą lub obiektem. Domyślnie są one lokalne i nie można ich używać w innych klasach. Aby uzyskać dostęp do pól, użyj operatora „.”:

    • nazwa klasy. zmienna

    Możesz ustawić pola statyczne za pomocą słowa kluczowego static. Takie pola są jedynym sposobem przechowywania zmiennych globalnych. Wynika to z faktu, że w Javie po prostu nie ma globalnych zmiennych.

    Wprowadzono możliwość importowania zmiennych w celu uzyskania dostępu z innych pakietów:

    • importuj statyczną nazwę klasy;

    Metoda jest podprogramem dla tych klas, w których jest zadeklarowana. Jest opisany na tym samym poziomie co zmienne. Jest ustawiony jako funkcja i może być dowolnego typu, w tym void:

    • klasa Point (int x, y;

      void init (int a, int b) (

    W powyższym przykładzie klasa Point ma liczbę całkowitą x i y, metodę init (). Dostęp do metod, a także do zmiennych, odbywa się za pomocą operatora „.”:

    • Point.init ();

    Właściwość init nic nie zwraca, więc jest typu void.

    Zmienne

    W samouczku dotyczącym języka programowania Java zmienne zajmują osobne miejsce. Wszystkie zmienne mają określony typ, określa wymagane miejsce do przechowywania wartości, zakres możliwych wartości, listę operacji. Przed manipulowaniem wartościami deklarowane są zmienne.

    Jednocześnie można zadeklarować kilka zmiennych. Przecinek służy do wyświetlenia ich:

    • int a, b, c;

    Inicjalizacja odbywa się po ogłoszeniu lub w jego trakcie:

    int a \u003d 10, b \u003d 10;

    Istnieje kilka rodzajów:

    • zmienne lokalne
    • zmienne instancji
    • zmienne statyczne

    Zmienne lokalne są deklarowane w metodach i konstruktorach; są tworzone podczas uruchamiania tych ostatnich i niszczone po zakończeniu. Dla nich zabronione jest określanie modyfikatorów dostępu i kontrolowanie poziomu dostępności. Nie są widoczne poza zadeklarowanym blokiem. W Javie zmienne nie mają wartości początkowej, więc jest obowiązkowo przypisywane przed pierwszym użyciem.

    Zmienne instancji muszą być zadeklarowane wewnątrz klasy. Są używane jako metody, ale dostęp do nich można uzyskać dopiero po utworzeniu obiektu. Zmienna jest niszczona, gdy obiekt jest niszczony. Zmienne instancji, w przeciwieństwie do lokalnych, mają wartości domyślne:

    • liczby to 0;
    • logika jest fałszywa;
    • referencje są zerowe.

    Zmienne statyczne nazywane są zmiennymi klasowymi. Ich nazwy rozpoczynają się od dużej litery i są tworzone za pomocą modyfikatora statycznego. Są one używane odpowiednio jako stałe, dodaje się do nich jeden kwalifikator z listy:

    • finał;
    • prywatny
    • publiczny.

    Uruchom na początku programu, zniszczony po zatrzymaniu wykonywania. Podobnie jak zmienne instancji, mają standardowe wartości, które są przypisane do pustych zmiennych. Liczby mają wartość 0, zmienne boolowskie są fałszywe, odwołania do obiektów są początkowo zerowe. Zmienne statyczne są wywoływane w następujący sposób:

    • ClassName.VariableName.

    Śmieciarz

    W samouczku „Język programowania Java dla początkujących” w sekcji automatycznego śmieciarza jest najbardziej interesująca.

    W Javie, w przeciwieństwie do języka C, nie jest możliwe ręczne usunięcie obiektu z pamięci. W tym celu zaimplementowano metodę automatycznego usuwania - moduł wyrzucania śmieci. W przypadku tradycyjnego usuwania za pomocą wartości null usuwane jest tylko odniesienie do obiektu, a sam obiekt jest usuwany. Istnieją metody wymuszonego wyrzucania elementów bezużytecznych, chociaż nie są zalecane do użycia w normalnej pracy.

    Moduł automatycznego usuwania nieużywanych obiektów działa w tle, uruchamia się, gdy program jest nieaktywny. Aby usunąć obiekty z pamięci, program zatrzymuje się; po zwolnieniu pamięci przerwana operacja zostaje wznowiona.

    Modyfikatory

    Istnieją różne typy modyfikatorów. Oprócz tych, które określają metodę dostępu, istnieją modyfikatory metod, zmiennych i klas. Metody zadeklarowane jako prywatne są dostępne tylko w zadeklarowanej klasie. Zmiennych takich nie można używać w innych klasach i funkcjach. Publiczny daje dostęp do dowolnej klasy. Jeśli chcesz pobrać klasę publiczną z innego pakietu, musisz ją najpierw zaimportować.

    Chroniony modyfikator jest podobny do publicznego - otwiera dostęp do pól klasy. W obu przypadkach zmienne mogą być używane w innych klasach. Ale modyfikator publiczny jest dostępny dla absolutnie wszystkich, a modyfikator chroniony jest dostępny tylko dla klas odziedziczonych.

    Modyfikator używany do tworzenia metod jest statyczny. Oznacza to, że utworzona metoda istnieje niezależnie od instancji klasy. Ostateczny modyfikator nie kontroluje dostępu, ale wskazuje na niemożność dalszej manipulacji wartościami obiektu. Zabrania zmiany elementu, dla którego jest określony.

    Ostateczny dla pól uniemożliwia zmianę pierwszej wartości zmiennej:

      public static void mthod (String args) (

      final int Name \u003d 1;

      int Nazwa \u003d 2; // da błąd

    Zmienne z ostatecznym modyfikatorem są stałymi. Zazwyczaj są pisane tylko wielkimi literami. CamelStyle i inne metody nie działają.

    Finał dla metod wskazuje na zakaz zmiany metody w odziedziczonej klasie:

      final void myMethod () (

      System.out.printIn („Hello world”);

    Ostateczny dla klas oznacza, że \u200b\u200bnie można tworzyć spadkobierców klas:

      ostateczna klasa publiczna (

    Streszczenie - modyfikator do tworzenia klas abstrakcyjnych. Wszelkie klasy abstrakcyjne i metody abstrakcyjne są przeznaczone do dalszego rozwijania w innych klasach i blokach. Modyfikator transient mówi maszynie wirtualnej, aby nie przetwarzała podanej zmiennej. W takim przypadku po prostu nie zostanie zapisany. Na przykład transient int Nazwa \u003d 100 nie jest zapisywany, a int b jest zapisywany.

    Platformy i wersje

    Istniejące rodziny języków programowania Java:

    • Edycja standardowa.
    • Edycja Enterprise
    • Micro Edition.
    • Karta.

    1. SE - jest głównym, szeroko używanym do tworzenia niestandardowych aplikacji do użytku osobistego.
    2. EE to zestaw specyfikacji dla rozwoju oprogramowania na poziomie przedsiębiorstwa. Zawiera więcej funkcji niż SE, więc jest wykorzystywany komercyjnie w dużych i średnich przedsiębiorstwach.
    3. ME - przeznaczone dla urządzeń o ograniczonej mocy i pamięci, zwykle mają mały rozmiar wyświetlacza. Takimi urządzeniami są smartfony i urządzenia PDA, odbiorniki telewizja cyfrowa.
    4. Karta - przeznaczona dla urządzeń o bardzo ograniczonych zasobach obliczeniowych, takich jak karty inteligentne, karty SIM, bankomaty. W tym celu zmieniono kod bajtowy, wymagania platformy, które składają się na biblioteki.

    Podanie

    Programy w języku Java są zwykle wolniejsze i zajmują więcej pamięci RAM. Analiza porównawcza języków Java i C wykazała, że \u200b\u200bC jest nieco bardziej produktywny. Po licznych zmianach i optymalizacji maszyny wirtualnej Java poprawiła swoją wydajność.

    Jest aktywnie wykorzystywany w aplikacjach na Androida. Program jest skompilowany w niestandardowy kod bajtowy, jest wykonywany na maszynie wirtualnej ART. Do kompilacji używa się Android Studio. To Google IDE jest oficjalnym narzędziem do tworzenia Androida.

    Microsoft opracował własną implementację wirtualnej maszyny Java MSJVM. Miał takie różnice, które złamały podstawową koncepcję wieloplatformową - nie było wsparcia dla niektórych technologii i metod, były niestandardowe rozszerzenia działające tylko na platformie Windows. Microsoft wydał język J #, którego składnia i działanie jest bardzo podobne do Java. Nie był zgodny z oficjalną specyfikacją i ostatecznie został wykluczony ze standardowych narzędzi programistycznych Microsoft. Studio wizualne.

    Język programowania Java i środowisko

    Tworzenie oprogramowania odbywa się w takich IDE:

    1. NetBeans IDE.
    2. Eclipse IDE.
    3. IntelliJ IDEA.
    4. JDeveloper.
    5. Java na iOS.
    6. Geany.

    JDK jest dystrybuowany przez Oracle jako zestaw programistyczny Java. Zawiera kompilator, standardowe biblioteki, narzędzia i system wykonawczy. Nowoczesne zintegrowane środowiska programistyczne korzystają z JDK.

    Wygodnie jest pisać kod w języku programowania Java w Netbeans i Eclipse IDE. Są to bezpłatne zintegrowane środowiska programistyczne; pasują do wszystkich platform Java. Służy również do programowania w języku Python, PHP, JavaScript, C ++.

    Jetbrains IntelliJ IDE jest dostępny w dwóch wersjach: darmowej i komercyjnej. Obsługuje pisanie kodu w wielu językach programowania, istnieją zewnętrzne wtyczki od programistów, które implementują jeszcze więcej PL.

    JDeveloper to kolejne opracowanie firmy Oracle. Jest całkowicie napisany w Javie, dlatego działa na wszystkich systemach operacyjnych.

Krótka historia języka Java

W tej sekcji krótko opisano historię języka Java. Ta sekcja oparta jest na różnych opublikowanych materiałach (głównie wywiady z twórcami języka Java w wydaniu SunWorld e-zine z lipca 1995 r.).

Historia Javy sięga 1991 roku, kiedy grupa inżynierów z Sun, kierowana przez Patricka Naughtona i członka zarządu (i wszechstronnego kreatora komputerowego) Jamesa Goslinga, zaczęła rozwijać mały język, który mógłby być używany do codziennego programowania urządzenia, na przykład kontrolery do przełączania kanałów kablowych (skrzynki przełączników telewizji kablowej).

Ponieważ takie urządzenia nie zużywają dużo energii i nie mają dużych układów pamięci, musiałem być mały i generować bardzo kompaktowe programy. Ponadto, ponieważ różni producenci mogą wybierać różne procesory jednostki centralnej, ważne było, aby nie utknąć w żadnej architekturze komputera. Projekt otrzymał nazwę kodową „Zielony”.

Starając się wynaleźć mały, kompaktowy i niezależny od maszyny kod, programiści odnowili model zastosowany przy wdrażaniu pierwszych wersji Pascala na początku ery. komputery osobiste. Nicklaus Wirth, twórca języka Pascal, opracował kiedyś język niezależny od maszyny, który generuje pośredni kod dla hipotetycznej maszyny. Ten język stał się produktem komercyjnym o nazwie UCSD Pascal. (Takie hipotetyczne maszyny są często nazywane wirtualnymi - na przykład wirtualna maszyna Java lub JVM).
Ten kod pośredni można wykonać na dowolnym komputerze, który ma odpowiedni interpreter. Inżynierowie, którzy pracowali nad projektem Green, korzystali również z maszyny wirtualnej, która rozwiązała ich główny problem.

Jednak większość pracowników firmy Sun miała doświadczenie w pracy z systemem operacyjnym UNIX, więc opracowany przez nich język był oparty na C ++, a nie Pascal. W szczególności zmienili język na obiektowy, a nie proceduralny.

Jak powiedział Gosling w wywiadzie: Język jest zawsze środkiem, a nie celem„Gosling najpierw postanowił nazwać go„ Dąb ”(„ Dąb ”). (Być może dlatego, że lubił patrzeć na dąb rosnący tuż pod oknami swojego biura Sun.) Następnie pracownicy Sun dowiedzieli się, że słowo Dąb było już używane w jako nazwa wcześniej utworzonego języka programowania i zmieniła nazwę Java.

W 1992 r. Wprowadzono pierwszy produkt o nazwie Green w ramach projektu Green.
„* 7”. Był to środek dla niezwykle intelektualnego pilot. (Miał moc stacja robocza SPARK mieści się w pudełku 6 x 4 x 4 cale.) Niestety żaden z nich firmy produkujące technologia elektroniczna nie jest zainteresowana tym wynalazkiem.

Następnie grupa zaczęła opracowywać urządzenie do telewizji kablowej, które może świadczyć nowe rodzaje usług, na przykład obejmować system wideo na żądanie. I znowu nie otrzymali ani jednej umowy. (Zabawne, że jedną z firm, które odmówiły podpisania umowy z nimi, kierował Jim Clark, założyciel Netscape, który później wiele zrobił dla sukcesu języka Java.)

W latach 1993 i połowie 1994 r. Kontynuowano nieudane poszukiwanie nabywców produktów opracowanych w ramach projektu Green (pod nową nazwą First Person, Inc.). (Patrick Naughton, jeden z założycieli grupy, później zaangażowany głównie w marketing, przeleciał ponad 300 tysięcy mil próbując sprzedać opracowaną technologię.) Projekt „First Person, Inc.” Został przerwany w 1994 roku.

W międzyczasie Internet rozwijał się w Internecie. Kluczem do tej sieci jest przeglądarka, która zamienia hipertekst w obraz na ekranie.
W 1994 r. Większość osób korzystała z przeglądarki Mosaic, niekomercyjnej przeglądarki internetowej opracowanej w centrum superkomputerów University of Illinois w 1993 r. (Ta przeglądarka została częściowo napisana przez Marka Andreessena za 6,85 USD za godzinę. W tym czasie Mark ukończył uniwersytet, a przeglądarka była jego pracą dyplomową. Następnie został jednym z założycieli i głównym programistą Netscape i przyszedł do sławy i bogactwo).

W wywiadzie dla magazynu Sun World Gosling powiedział, że w połowie 1994 roku programiści zrozumieli: „Musimy stworzyć naprawdę fajną przeglądarkę. Taka przeglądarka powinna być jedną z niewielu aplikacji modnej technologii klient-serwer, w której istotne jest, aby co zrobiliśmy: niezależność architektoniczna, wykonanie w czasie rzeczywistym, niezawodność, bezpieczeństwo - kwestie, które nie były niezwykle ważne dla stacji roboczych. Stworzyliśmy taką przeglądarkę ”.

W rzeczywistości przeglądarkę opracowali Patrick Naughton i Jonathan Payne. Później zmieniło się w nowoczesną przeglądarkę HotJava. Ta przeglądarka została napisana w Javie, aby zademonstrować swoją pełną moc. Jednak programiści nie zapomnieli o potężnych narzędziach, które są obecnie nazywane apletami, wyposażając przeglądarkę w możliwość wykonywania kodu na stronach internetowych. Demonstracja technologii została zaprezentowana na Sun World 95 w dniu 23 maja 1995 r. I spowodowała powszechne szaleństwo nad Javą, które trwa do dziś.

Firma Sun wydała pierwszą wersję Java na początku 1996 roku. Kilka miesięcy później pojawiła się Java 1.02. Ludzie szybko zdali sobie sprawę, że Java 1.02 nie nadaje się do tworzenia poważnych aplikacji. Oczywiście tej wersji można używać do tworzenia stron internetowych z tańczącymi ludźmi, ale w wersji Java 1.02 nic nie można nawet wydrukować.

Szczerze mówiąc, Java 1.02 była wciąż surowa. Jej następca, Java 1.1, wypełnił większość luk, znacznie poprawiając zdolność do refleksji i dodając nowy model zdarzeń do programowania grafiki interfejs użytkownika. Mimo to wciąż była dość ograniczona.

Wydanie Java 1.2 było główną wiadomością z konferencji JavaOne w 1998 roku. W nowej wersji słabe narzędzia do tworzenia graficznego interfejsu użytkownika i aplikacji graficznych zostały zastąpione złożonymi i wielkoskalowymi narzędziami. Był to krok naprzód w kierunku wdrożenia hasła „Write Once, Run Anywhere” ™, które zostało zaproponowane podczas opracowywania poprzednich wersji.

W grudniu 1998 r. Trzy dni (!) Po opublikowaniu nazwy nowej wersji zmieniono ją na obszerną frazę Java 2 Standart Edition Software Development Kit Version 1.2 (Standard Edition pakietu oprogramowania do tworzenia oprogramowania w Javie 2, wersja 1.2).

Oprócz standardowej edycji pakietu („Edycja standardowa”) zaproponowano jeszcze dwie opcje: „mikro edycja” („Micro Edition”) na urządzenia przenośne, na przykład na telefony komórkowe, oraz. „Enterprise Edition” do budowania aplikacji serwerowych. Nasza książka koncentruje się na wydaniu standardowym.

Wersje 1.3 i 1.4 standardowej edycji zestawu narzędzi są znacznie bardziej zaawansowane niż początkowa wersja Java 2. Posiadają nowe funkcje i oczywiście zawierają znacznie mniej błędów. Na stole. 1 1 pokazuje szybki rozwój biblioteki API, ponieważ dostępne są nowe wersje standardowej edycji zestawu SDK.

Tabela 1.1 Rozwój biblioteki API od Java Standart Edition

Liczba klas i interfejsów

Liczba metod i pól

Typowe nieporozumienia dotyczące języka Java

W tej sekcji wymieniono i komentarze dotyczące niektórych typowych nieporozumień dotyczących języka Java.

Java jest rozszerzeniem język HTML.

Java to język programowania, a HTML to sposób opisywania struktury stron internetowych. Nie ma między nimi nic wspólnego, z wyjątkiem rozszerzeń języka HTML, które pozwalają na umieszczanie apletów napisanych w Javie na stronach internetowych.

Pracuję w XML, więc nie potrzebuję Java.

Java to język programowania, a XML to tylko sposób na opisanie danych. Dane opisane przy użyciu języka XML można przetwarzać za pomocą programów napisanych w dowolnym języku programowania, ale tylko biblioteka Java API zawiera doskonałe narzędzia pomocnicze do przetwarzania takich danych. Ponadto język Java implementuje wiele funkcji języka XML. Są one opisane bardziej szczegółowo w drugim tomie.

Java jest łatwa do nauczenia.

Nie ma jednego języka programowania tak potężnego jak język Java, którego można by łatwo nauczyć. Pisanie programów zabawek jest dość proste, ale wykonywanie poważnej pracy jest zawsze trudne. Zauważ też, że w tej książce tylko cztery rozdziały poświęcone są dyskusji na temat samego języka Java. Pozostałe rozdziały wyjaśniają, jak pracować z bibliotekami zawierającymi tysiące klas i interfejsów, a także wiele tysięcy funkcji. Na szczęście nie trzeba znać każdego z nich, ale, co zaskakujące, użytkownik wymaga dużej wiedzy, aby ukończyć prawdziwy projekt.

Java jest łatwa do zaprogramowania.

Java SDK Toolkit nie jest łatwy w użyciu dla wszystkich, z wyjątkiem programistów przyzwyczajonych do tego trybu wiersz poleceń. Istnieją zintegrowane środowiska programistyczne, w tym edytory tekstu, kompilatory, narzędzia do tworzenia formularzy przy użyciu technologii przeciągnij i upuść, ale dla początkujących wyglądają na zbyt skomplikowane i zastraszające. Ponadto często generują programy składające się z setek linii. Wydaje nam się, że rozpoczęcie nauki języka Java za pomocą długich programów generowanych automatycznie i wypełnionych komentarzami typu „NIE DOTYKAJ RĘKAMI!” Nie jest zbyt dobrym pomysłem. Uważamy, że najlepiej jest uczyć się języka Java za pomocą znanego edytora tekstu. Tak zrobimy.

Język Java stanie się w końcu uniwersalnym językiem programowania dla wszystkich platform.

Jest to teoretycznie możliwe. O tym marzą wszyscy producenci oprogramowania, z wyjątkiem Microsoft. Istnieje jednak wiele aplikacji, które działają doskonale na komputerach osobistych, które nie będą działać tak dobrze na innych urządzeniach lub pod kontrolą przeglądarki. Ponadto aplikacje te są pisane w celu maksymalizacji możliwości procesorów i bibliotek komputerowych. W każdym razie zostały już przeniesione na wszystkie ważne platformy. Takie aplikacje obejmują edytory tekstu i obrazów, a także przeglądarki internetowe. Zazwyczaj aplikacje te są napisane w C lub C ++, a użytkownik nic nie zyska, jeśli przepisuje je w Javie. Między innymi po przepisaniu w języku Java programy te staną się wolniejsze i mniej wydajne, przynajmniej w najbliższej przyszłości.

Język Java to po prostu kolejny język programowania.

Java to świetny język programowania. Wielu programistów woli to, a nie języki C lub C ++. Istnieją jednak na świecie setki doskonałych języków programowania, które nigdy nie zostały powszechnie przyjęte, podczas gdy języki z oczywistymi wadami, takie jak C ++ i Visual Basic, osiągnęły przytłaczający sukces.

Dlaczego? O sukcesie dowolnego języka programowania decyduje przede wszystkim praktyczność jego systemu wsparcia, a nie elegancja jego składni. Czy istnieją przydatne, wygodne i standardowe biblioteki, które pozwalają robić dokładnie to, czego potrzebuje programista? Czy istnieje wygodne środowisko do tworzenia i debugowania programów? Czy język i jego narzędzia są zintegrowane z infrastrukturą komputerową? Java odnosi sukcesy w aplikacjach serwerowych, ponieważ biblioteki klas ułatwiają robienie tego, co wcześniej było trudne, takie jak obsługa sieci i wielowątkowość. Fakt, że język Java zmniejszył liczbę błędów związanych ze wskaźnikami również przemawia na jego korzyść. Dzięki temu wzrosła wydajność programistów. Nie jest to jednak powód jego sukcesu.

Programy Java są interpretowane, co oznacza, że \u200b\u200bpoważne aplikacje będą działać zbyt wolno na określonej platformie.

Wiele programów spędza większość czasu na interakcjach z interfejsem użytkownika lub czekaniu na dane z sieci. Wszystkie programy, bez względu na język, w jakim są napisane, muszą reagować na kliknięcie myszką w określonym czasie. Oczywiście nie należy wykonywać zadań wymagających wysokiej wydajności centralny procesorza pomocą interpretera Java. Jednak na platformach, które umożliwiają kompilację synchroniczną, wystarczy uruchomić kody bajtów w celu wykonania, a większość pytań po prostu zniknie.

W końcu język Java jest świetny do tworzenia programów sieciowych. Doświadczenie pokazuje, że z łatwością utrzymuje wysoką prędkość transferu sieci, nawet podczas intensywnego przetwarzania, takiego jak szyfrowanie. Ponieważ prędkość pracy w Javie jest wyższa niż prędkość transmisji danych w sieci, nie ma znaczenia, że \u200b\u200bprogramy C ++ mogą działać jeszcze szybciej. Java jest łatwiejsza do programowania, a napisane w niej programy są niezależne od maszyny.

Wszystkie programy Java działają pod kontrolą przeglądarek internetowych.

Wszystkie aplety napisane w Javie są w rzeczywistości obsługiwane przez przeglądarki internetowe. W rzeczywistości jest to definicja apletu, programu wykonywanego przez przeglądarkę internetową. Jest jednak całkiem możliwe i właściwe tworzenie niezależnych programów Java, które działają niezależnie od przeglądarki internetowej.

Te programy (powszechnie nazywane aplikacjami) są całkowicie niezależne od maszyny. Wystarczy pobrać program i uruchomić go na innym komputerze! Ponieważ Java jest wygodniejsza i mniej podatna na błędy niż C ++, reprezentuje dobry wybór. W połączeniu z narzędziami dostępu do bazy danych, takimi jak pakiet Java Database Connectivity, język Java jest po prostu atrakcyjny. Szczególnie wygodnie jest uczyć się go jako pierwszego języka programowania.
Większość programów w tej książce jest całkowicie niezależna. Oczywiście aplety są bardzo zabawne. Aplikacje Java są jednak ważniejsze i przydatne w praktyce.

Aplety Java stanowią ogromne zagrożenie dla systemu bezpieczeństwa.

Opublikowano kilka raportów o błędach dotyczących bezpieczeństwa Java. Większość z nich dotyczyła implementacji języka Java za pomocą określonej przeglądarki. Badacze potraktowali to jako wyzwanie i zaczęli szukać luk w systemie bezpieczeństwa języka Java, aby przezwyciężyć siłę i złożoność modelu bezpieczeństwa apletów. Wykryte błędy techniczne zostały wkrótce poprawione i, o ile wiemy, żaden prawdziwy system nigdy nie został naruszony. Aby ocenić znaczenie tego faktu, pamiętaj o milionach wirusów w plikach wykonywalnych systemu operacyjnego Windows i makrach edytora tekstu Word, co naprawdę spowodowało wiele problemów i zaskakująco bezzębną krytykę słabości zaatakowanej platformy. Ponadto mechanizm ActiveX w programie Internet Explorer może powodować wiele skarg, ale metody jego łamania są tak oczywiste, że tylko kilku ekspertów zadało sobie trud opublikowania swoich badań.

Niektórzy administratorzy systemu zaczęli nawet wyłączać systemy bezpieczeństwa języka Java w swoich przeglądarkach, aby użytkownicy mogli, jak poprzednio, pobierać pliki wykonywalne, formanty ActiveX i dokumenty tworzone za pomocą edytora tekstu. To zabawne, że obecnie prawdopodobieństwo przezwyciężenia systemu ochrony apletów Java jest porównywalne z prawdopodobieństwem zgonu w katastrofie lotniczej, natomiast ryzyko zarażenia komputera przez otwarcie dokumentu utworzonego przez edytor tekstu jest porównywalne z ryzykiem śmierci pod kołami samochodu, przejechania drogi w ciągu godziny szczyt.

JavaScript to uproszczona wersja języka Java.

JavaScript to język skryptowy, którego można używać na stronach internetowych. Został opracowany przez Netscape i po raz pierwszy został nazwany LiveScript. Składnia języka JavaScript przypomina składnię języka Java, jednak w tym miejscu kończą się ich podobieństwa (oczywiście z wyjątkiem nazwy). Podzbiór języka JavaScript został znormalizowany pod nazwą ECMA-262, jednak konieczne są jego rozszerzenia prawdziwa pracanie były standaryzowane.

Język Java. Wprowadzenie

Przez długi czas trudno było wyobrazić sobie magazyn komputerowy bez artykułu na temat języka Java. Popularne gazety i czasopisma, takie jak Nowa York Times, The Washington Post i Business Week.

Nie można sobie przypomnieć, że Narodowe Radio Publiczne kiedykolwiek poświęcało dziesięciominutową transmisję na język programowania. Na lepsze lub gorsze zależy to od punktu widzenia. A inwestycja 100 milionów USD zainwestowana w produkcję oprogramowania stworzonego przy użyciu określonego języka programowania?! CNN, CNBC i inne media środki masowego przekazu właśnie rozmawiali, a teraz rozmawiają o tym, w jaki sposób język Java może to zrobić.

Jednak ta książka jest przeznaczona dla poważnych programistów, a ponieważ język Java jest poważnym językiem programowania, mamy coś do powiedzenia. Nie będziemy zatem zagłębiać się w analizę obietnic reklamowych i próbować dowiedzieć się, co jest w nich prawdziwe, a co fikcji. Zamiast tego opisujemy język Java z wystarczającą dokładnością dokładnie jako język programowania (w tym oczywiście funkcje, które pozwalają na jego używanie w Internecie, co w rzeczywistości wywołało tyle szumu). Następnie spróbujemy oddzielić rzeczywistość od fantasy, wyjaśniając, że język Java naprawdę może, a co nie.

Na początku istniała przepaść między obietnicami reklamowymi a prawdziwymi możliwościami języka Java. W miarę dojrzewania technologia stała się bardziej stabilna i niezawodna, a oczekiwania spadły do \u200b\u200brozsądnego poziomu. Obecnie język Java jest coraz częściej wykorzystywany do tworzenia „oprogramowania pośredniego” (oprogramowania pośredniego), które obsługuje komunikację między klientami a zasobami serwera (na przykład bazami danych).

Pomimo tego, że te ważne aplikacje nie są niesamowite, to właśnie w tym obszarze język Java był najbardziej przydatny ze względu na jego niezależność od maszyny, wielowątkowość i możliwości programowania sieciowego. Ponadto Java przejęła wiodącą rolę w systemach wbudowanych, stając się de facto standardem dla urządzeń przenośnych, wirtualnych kiosków, komputerów pokładowych itp. Jednak pierwsze próby przepisania szeroko rozpowszechnionych programów na komputery osobiste w Javie zakończyły się niepowodzeniem - powstałe aplikacje okazały się mało wydajne i wolne. Wraz z nadejściem nowej wersji niektóre z tych problemów zostały rozwiązane, a jednak należy pamiętać, że użytkownicy ogólnie są całkowicie obojętni na język, w którym napisane są programy, które kupili. Uważamy, że główne zalety języka Java ujawnią się podczas tworzenia nowych typów urządzeń i aplikacji, a nie podczas przepisywania istniejących programów.

Język Java jako narzędzie programistyczne

Jako język programowania Java nadmiernie wypełniła swoje obietnice reklamowe. Bez wątpienia jest to jeden z najlepszych języków dostępnych dla poważnych programistów. Potencjalnie Java ma wszystkie warunki, aby stać się doskonałym językiem programowania, ale prawdopodobnie jest już za późno. Kiedy pojawia się nowy język programowania, natychmiast pojawia się nieprzyjemny problem z jego kompatybilnością z wcześniej utworzonym oprogramowaniem. Co więcej, nawet jeśli zmiany w tych programach można wprowadzić bez ingerencji w ich tekst, twórcom języka, który został tak ciepło przyjęty przez społeczeństwo, takim jak Java, trudno powiedzieć: „Tak, być może popełniliśmy błąd podczas opracowywania wersji X, ale wersja Y będzie lepiej. ” W związku z tym, oczekując dalszych ulepszeń, musimy powiedzieć, że struktura języka Java nie zmieni się znacząco w najbliższej przyszłości.

Oczywiste pytanie brzmi: „ Jak ulepszyłeś język Java?„Okazuje się, że nie dokonano tego poprzez ulepszenie samego języka programowania, ale poprzez zasadniczą zmianę bibliotek programów napisanych w języku Java. Sun Microsystems zmienił wszystko: zaczynając od nazw poszczególnych funkcji bibliotecznych (czyniąc je bardziej znaczącymi) i metod pracy modułów graficznych ( zmiana metody przetwarzania zdarzeń i częściowe przepisywanie działających programów) i zakończenie tworzenia nowych właściwości języka, na przykład, oznacza drukowanie informacji, które nie były w Javie 1.0, co zaowocowało znacznie bardziej przydatną platformą programową niż wszystkie poprzednie wersje języka Java.

Microsoft wydał swój własny produkt o nazwie J ++, który jest powiązany z językiem Java. Język J ++ jest interpretowany przez maszynę wirtualną kompatybilną z maszyną wirtualną Java (Java Virtual Machine) podczas wykonywania kodu bajtowego, ale interfejsy z zewnętrznymi kodami dla tych języków są znacznie różne. Języki J ++ i Java mają prawie taką samą składnię. Jednak Microsoft stworzył dodatkowe konstrukcje językowe. Wszystkie mają raczej wątpliwą wartość, z wyjątkiem interfejsu Windows API. Oprócz tego, że języki te mają tę samą składnię, ich główne biblioteki (ciągi, narzędzia, sieciowe narzędzia do programowania, narzędzia do obsługi wielowątkowości, biblioteki matematyczne itp.) Są w zasadzie zbieżne.

Jednak biblioteki graficzne, interfejs użytkownika i dostęp do zdalnych obiektów w tych językach są zupełnie inne. Microsoft obecnie nie obsługuje już J ++, opracowując nowy język C #, który ma wiele wspólnego z Javą, ale używa innej maszyny wirtualnej. W tej książce nie opisano J ++ ani C #.

Korzyści z Java

1) Jedną z głównych zalet języka Java jest niezależność od platformy, na której działają programy: ten sam kod można uruchomić pod kontrolą działania systemy Windows, Solaris, Linux, Machintosh itp.
Jest to naprawdę konieczne, gdy programy są pobierane przez Internet w celu późniejszego wykonania pod kontrolą różnych systemów operacyjnych.

2) Kolejną zaletą jest to składnia języka Java jest podobna do składni języka C ++, a programiści znający języki C i C ++, jego badanie nie jest trudne. To prawda, że \u200b\u200bdla programistów znających język Visual Basic ta składnia może być niezwykła.

Jeśli nigdy nie programowałeś w C ++, niektóre terminy użyte w tej sekcji nie będą dla ciebie jasne. W takim przypadku możesz go pominąć. Gdy dojdziesz do końca rozdziału 6, warunki te zostaną ci zaznajomione.

3) Ponadto Java - język w pełni obiektowy, nawet bardziej niż C ++. Wszystkie jednostki w języku Java są obiektami, z wyjątkiem kilku podstawowych typów (typów pierwotnych), takich jak liczby. (Ponieważ tworzenie skomplikowanych projektów przy użyciu programowania obiektowego jest łatwe, zastąpiło ono starsze programowanie strukturalne. Jeśli nie znasz programowania obiektowego, rozdziały 3-6 dostarczą ci wszystkich niezbędnych informacji na ten temat.)

Jednak opracowanie innego, nieco ulepszonego dialektu języka C ++ nie wystarczy. Jest niezwykle ważne, aby tworzenie programów, które nie zawierają błędów, było łatwiejsze w języku Java niż w języku C ++. Dlaczego? Deweloperzy Java od dawna zastanawiają się, dlaczego programy C ++ są tak podatne na błędy. Udostępnili językowi Java narzędzia do wyeliminowania możliwości tworzenia programów, w których ukryte byłyby najczęstsze błędy. W tym celu w języku Java wykonano następujące czynności.

4) Wykluczona jest możliwość jawnego przydzielenia i zwolnienia pamięci.
Pamięć Java jest zwalniana automatycznie przy użyciu mechanizmu czyszczenia pamięci. Programator ma gwarancję błędów związanych z niewłaściwym użyciem pamięci.

5) Wprowadzane są prawdziwe tablice, a arytmetyka wskaźników jest zabroniona.
Teraz programiści w zasadzie nie mogą usuwać danych z pamięci z powodu niewłaściwego użycia wskaźników.

6) Możliwość pomylenia operatora przypisania z operatorem porównania dla równości jest wykluczona.
Teraz nie możesz nawet skompilować wyrażenia, jeśli (ntries \u003d 3). . . (Programiści Visual Basic mogą w ogóle nie zauważyć żadnego problemu, ponieważ ten błąd jest źródłem większości nieporozumień w C i C ++).

7) Wyłączone wielokrotne dziedziczenie. Zastępuje go nowa koncepcja - interfejs zapożyczony z Celu C.
Interfejs daje programiście prawie wszystko, co może uzyskać z wielokrotnego dziedziczenia, unikając jednocześnie trudności związanych z zarządzaniem hierarchiami klas.

Funkcje Java

Równina
Interpretowane
Rozpowszechniane
Niezawodny
Bezpieczny
Niezależny od maszyny
Obiektowy
Wysoka wydajność
Wielowątkowy
Dynamiczny
Niezależna architektura komputerowa

W ostatniej części omówiliśmy już niektóre z tych punktów. W tej sekcji: cytujemy cytaty z podręcznika języka Java, które ujawniają cechy tego języka; podzielimy się z czytelnikami naszymi przemyśleniami na temat indywidualnych właściwości języka w oparciu o nasze własne doświadczenia z najnowszą wersją.

Równina

Chcieliśmy stworzyć system, który można łatwo zaprogramować, nie wymaga dodatkowego szkolenia i uwzględnia obowiązującą praktykę i standardy programowania. Dlatego pomimo tego, że uznaliśmy język C ++ za nieodpowiedni do tych celów, język Java został zaprojektowany tak, aby był jak najbardziej podobny, aby system był bardziej dostępny. Niewiele jest rzadko używanych, niejasnych i niejasnych środków języka C ++ w języku Java, które naszym zdaniem wyrządzają więcej szkody niż pożytku.

Składnia Java jest zasadniczo udoskonaloną wersją składni C ++. Ten język nie ma plików nagłówkowych, arytmetyki wskaźników (i samych wskaźników), struktur, związków, przeciążania operatorów, wirtualnych klas bazowych itp. (Różnice między językami Java i C ++ są opisane w uwagach na temat języka C ++ rozproszonych w całej książce.) Jednak programiści nie starali się naprawić wszystkich niedociągnięć języka C ++.

Na przykład składnia instrukcji switch w Javie pozostała niezmieniona. Znając język C ++, przejście do składni Java będzie łatwe.
Jeśli zwykle używasz wizualnego środowiska programistycznego (takiego jak Visual Basic), język Java będzie dla ciebie trudny.
Jego składnia często wygląda dość dziwnie (chociaż nie jest trudno zrozumieć znaczenie wyrażenia). Co ważniejsze, pracując w Javie, musisz zaprogramować znacznie więcej. Zaletą języka Visual Basic jest to, że jego wizualne środowisko programowania pozwala prawie automatycznie budować infrastrukturę aplikacji. Aby osiągnąć ten sam wynik przy użyciu języka Java, musisz programować ręcznie, ale otrzymujesz znacznie krótsze programy.

Istnieje jednak trzeci rodzaj środowiska programistycznego, które pozwala tworzyć programy przy użyciu technologii przeciągnij i upuść.

Kolejnym aspektem prostoty jest zwięzłość. Jednym z celów języka Java jest zapewnienie rozwoju programów, które mogą być całkowicie niezależnie uruchamiane na małych komputerach. Rozmiar głównego interpretera i narzędzi wsparcia klasy wynosi około 40 KB; standardowe biblioteki i narzędzia do obsługi wątków (szczególnie samodzielne mikrojądro) zajmują kolejne 17: kilobajty.
To ogromny sukces. Należy jednak pamiętać, że biblioteki graficznego interfejsu użytkownika są znacznie większe.

Obiektowy

Mówiąc wprost, programowanie obiektowe to metoda programowania, która koncentruje się na danych (tj. Obiektach) i ich środkach dostępu. Nawiązując do analogii ze stolarstwem, możemy powiedzieć, że zorientowany obiektowo rzemieślnik skupia się głównie na krześle, które robi, a dopiero potem interesuje się niezbędnymi do tego narzędziami; jednocześnie bezpartyjny cieśla myśli tylko o swoich narzędziach. Zorientowane obiektowo właściwości Java i C ++ zasadniczo się pokrywają.

Orientacja obiektowa w ciągu ostatnich 30 lat dowiodła już swojej wartości i bez niej nie można sobie wyobrazić nowoczesnego języka programowania. Rzeczywiście, obiektowe funkcje języka Java są porównywalne z językiem C ++. Główną różnicą między nimi jest mechanizm wielokrotnego dziedziczenia, dla którego w języku Java najlepsza decyzja, a także w modelu metaklasy Java.

Mechanizmy odbicia (rozdział 5) i serializacji obiektów (rozdział 12) pozwalają na implementację stabilnych obiektów i narzędzi do tworzenia graficznych interfejsów użytkownika w oparciu o gotowe komponenty.

Jeśli nigdy nie programowałeś w językach zorientowanych obiektowo, dokładnie zapoznaj się z rozdziałami 4-6. Te rozdziały przedstawiają podstawy programowania obiektowego i pokazują jego zalety podczas opracowywania złożonych projektów w porównaniu z tradycyjnymi językami zorientowanymi proceduralnie, takimi jak C lub Basic.

Rozpowszechniane

Java ma dużą bibliotekę programów do przesyłania danych opartych na TCP / IP (Transmission Control Protocol / Internet Protocol), takich jak HTTP (Hypertext Transfer Protocol - Hypertext Transfer Protocol) lub FTP (File Transfer Protocol- Protokół Przesyłania Plików). Aplikacje napisane w języku Java mogą otwierać obiekty i uzyskiwać do nich dostęp przez sieć za pomocą iAdresy URL (jednolita lokalizacja zasobów) tak proste jak av sieć lokalna.

Język Java zapewnia wydajne i wygodne narzędzia do pracy w sieci. Każdy, kto kiedykolwiek próbował pisać programy do pracy w Internecie w innych językach, będzie mile zaskoczony, jak łatwo najtrudniejsze zadania, na przykład otwieranie połączeń sieciowych (połączenie gniazd), są rozwiązywane w Javie. Elegancki mechanizm, składający się z tak zwanych serwletów, sprawia, że \u200b\u200bpraca na serwerze jest niezwykle wydajna.

Serwlety są obsługiwane przez wiele popularnych serwerów WWW. (Sieć zostanie opisana w tomie drugim). Zależność między obiektami rozproszonymi w języku Java zapewnia mechanizm wywoływania metod zdalnych (ten temat jest również omówiony w tomie drugim).

Niezawodny

Język Java został zaprojektowany do tworzenia programów, które powinny działać niezawodnie w każdej sytuacji. Język Java koncentruje się przede wszystkim na wczesnym wykrywaniu ewentualnych błędów, weryfikacji dynamicznej (podczas wykonywania programu), a także eliminowaniu sytuacji podatnych na błędy ... Jedyną znaczącą różnicą między językiem Java a językiem C ++ jest model wskaźnika przyjęty w języku Java, który wyklucza możliwość nadpisania fragmentu pamięci i uszkodzenia danych.

Ta właściwość jest również bardzo przydatna. Kompilator Java wykrywa błędy wykrywane w innych językach tylko na etapie wykonywania programu. Ponadto programiści, którzy spędzają wiele godzin na poszukiwaniu błędu, który spowodował uszkodzenie pamięci z powodu nieprawidłowego wskaźnika, będą bardzo zadowoleni, że takie problemy w zasadzie nie mogą wystąpić w języku Java.

Jeśli programowałeś w językach Visual Basic lub COBOL, w których wskaźniki nie są jawnie używane, możesz nie zrozumieć, dlaczego jest to tak ważne. Programiści C mieli znacznie mniej szczęścia. Potrzebują wskaźników, aby uzyskać dostęp do ciągów, tablic, obiektów, a nawet plików. Podczas programowania w Visual Basic nie jest to wymagane, a programista może nie martwić się o przydział pamięci dla tych jednostek. Z drugiej strony wiele struktur danych w języku pozbawionym wskaźników jest bardzo trudnych do wdrożenia. W przypadku zwykłych struktur, takich jak łańcuchy i tablice, wskaźniki nie są potrzebne. Cała moc wskaźników pojawia się tylko tam, gdzie nie można się bez nich obejść, na przykład podczas tworzenia połączonych list. Programista Java jest na zawsze wolny od złych wskaźników, błędnej alokacji i wycieków pamięci.

Bezpieczny

Język Java jest przeznaczony do użytku w środowisku sieciowym lub rozproszonym. Z tego powodu wiele uwagi poświęcono bezpieczeństwu. Język Java pozwala tworzyć systemy chronione przed wirusami i intruzami.

W pierwszym wydaniu napisaliśmy: „Nigdy nie mów nigdy” i mieliśmy rację. Zespół ekspertów ds. Bezpieczeństwa z Uniwersytetu Princeton odkrył pierwsze błędy bezpieczeństwa w Javie 1.0 wkrótce po wprowadzeniu do sprzedaży pierwszej wersji zestawu narzędzi JDK. Co więcej, zarówno oni, jak i inni specjaliści kontynuowali, a następnie znaleźli coraz więcej błędów w mechanizmach bezpieczeństwa wszystkich kolejnych wersji języka Java.

Pozytywną stroną tej sytuacji jest to, że zespół programistów języka Java zadeklarował swoją nietolerancję na jakiekolwiek błędy w systemie bezpieczeństwa i natychmiast przystąpił do naprawy wszystkich problemów występujących w mechanizmie bezpieczeństwa apletów. W szczególności, publikując wewnętrzne specyfikacje interpretera języka Java, Sun znacznie ułatwił znajdowanie ukrytych błędów bezpieczeństwa i pozyskał niezależnych ekspertów, którzy ich szukają.

Zwiększyło to prawdopodobieństwo, że wszystkie błędy w systemie bezpieczeństwa zostaną wkrótce wykryte. W każdym razie niezwykle trudno jest oszukać system bezpieczeństwa języka Java. Dotychczasowe błędy były prawie nieuchwytne, a ponadto ich liczba jest (względnie) niewielka.

Strona bezpieczeństwa firmy Sun ma następujący adres URL: http://java.sun.com/sfaq/.

Podajemy niektóre sytuacje, które zapobiegają wystąpieniu bezpieczeństwa języka Java.

1) Przepełnienie stosu programu wykonywalnego, co spowodowało rozprzestrzenienie się w Internecie niesławnego „robaka”.

2) Uszkodzenie obszarów pamięci poza przestrzenią przydzieloną do procesu.

3) Odczytywanie i zapisywanie plików lokalnych podczas korzystania z bezpiecznego modułu ładującego, takiego jak przeglądarka internetowa, który uniemożliwia taki dostęp do plików.

Wszystkie te środki bezpieczeństwa są dość odpowiednie i zwykle działają bezbłędnie, ale roztropność nigdy nie zaszkodzi. Chociaż dotychczas odkryte błędy nie były trywialne, a wszystkie szczegóły ich wyszukiwania są często utrzymywane w tajemnicy, należy zauważyć, że prawdopodobnie niemożliwe jest udowodnienie bezpieczeństwa języka Java.

Z biegiem czasu nowe funkcje bezpieczeństwa zostały dodane do języka. Począwszy od wersji 1.1 koncepcja języka podpisanego cyfrowo pojawiła się w języku Java. Korzystając z klasy z podpisem cyfrowym, możesz być pewien jej autora. Jeśli mu zaufasz, możesz przyznać tej klasie wszystkie przywileje dostępne na twoim komputerze.

Alternatywny mechanizm dostarczania kodu firmy Microsoft opiera się na technologii ActiveX i dla bezpieczeństwa wykorzystuje tylko podpisy cyfrowe. Oczywiście to nie wystarczy - każdy użytkownik oprogramowania Microsoft może potwierdzić, że programy znanych producentów często zawodzą, co stwarza ryzyko uszkodzenia danych. System bezpieczeństwa w Javie jest znacznie bardziej niezawodny niż technologia ActiveX, ponieważ kontroluje aplikację od momentu jej uruchomienia i nie pozwala jej na uszkodzenie.

Architektura niezależna

Kompilator generuje plik obiektowy, którego format nie zależy od architektury komputera - skompilowany program może działać na dowolnym procesorze pod kontrolą systemu wykonawczego programu Java. W tym celu kompilator Java generuje polecenia kodu bajtowego, które są niezależne od konkretnej architektury komputera. Kod bajtowy został zaprojektowany w taki sposób, że może być łatwo interpretowany na dowolnej maszynie lub przenoszony do kodu zależnego od maszyny w locie.

Nie jest nowy pomysł. Ponad 20 lat temu tę samą technologię zastosowano w systemie implementacji języka Pascal opracowanym przez Niclausa Wirtha i UCSD Pascal. Używanie kodów bajtów daje duży zysk podczas wykonywania programu (choć kompilacja synchroniczna kompensuje to w wielu przypadkach). Programiści Java wykonali świetną robotę, opracowując zestaw instrukcji kodu bajtowego, które działają świetnie na większości nowoczesnych komputerów, łatwo tłumacząc je na rzeczywiste instrukcje maszynowe.

Niezależny od maszyny

W przeciwieństwie do języków C i C ++ specyfikacja Java nie ma żadnych aspektów specyficznych dla implementacji. Zarówno rozmiar głównych typów danych, jak i operacje arytmetyczne na nich są precyzyjnie określone.

Na przykład int w Javie zawsze oznacza 32-bitową liczbę całkowitą. W C i C ++ typ int może oznaczać 16-bitową lub 32-bitową liczbę całkowitą, a także liczbę całkowitą o dowolnym rozmiarze, zgodnie z wyborem twórcy konkretnego kompilatora. Jedynym ograniczeniem jest to, że rozmiar typu int nie może być mniejszy niż rozmiar krótkiego typu int i nadwymiarowe typu long int. Stały rozmiar typów numerycznych pozwala uniknąć wielu problemów związanych z uruchamianiem programów na różnych komputerach. Dane binarne są przechowywane i przesyłane w ustalonym formacie, co pozwala również uniknąć nieporozumień związanych z różną kolejnością zapisywania bajtów na różnych platformach (konflikt „big endian / little endian”). Rzędy są przechowywane w standardowy format Unicode

Biblioteki wchodzące w skład systemu definiują interfejs niezależny od maszyny. Na przykład język zapewnia abstrakcyjną klasę Window i jej implementację dla systemów operacyjnych Unix, Windows i Macintosh.

Każdy, kto kiedykolwiek próbował napisać program, który działałby równie dobrze w systemach Windows, Macintosh i dziesięciu wersjach systemu Unix, wie, że jest to bardzo trudne zadanie. Wersja Java podjęła heroiczną próbę rozwiązania tego problemu, udostępniając prosty zestaw narzędzi, który dostosowuje zwykłe elementy interfejsu użytkownika do dużej liczby platformy oprogramowania. Niestety biblioteka, która wymagała dużo pracy, nie pozwoliła na osiągnięcie akceptowalnych wyników na różnych platformach. (W tym samym czasie na różnych platformach pojawiły się różne błędy w programach graficznych.)

To był jednak dopiero początek. W wielu aplikacjach niezależność maszyny jest znacznie ważniejsza niż zaawansowanie graficznego interfejsu użytkownika. Właśnie te aplikacje skorzystały z wydania Java 1.0. Jednak teraz zestaw narzędzi do tworzenia graficznego interfejsu użytkownika został całkowicie przeprojektowany i nie jest już zależny od interfejsu użytkownika na komputerze hosta. Nowa wersja jest bardziej znacząca i, naszym zdaniem, bardziej atrakcyjna dla użytkownika niż poprzednie.

Interpretowane

Interpretator Java może zostać przesłany na dowolną maszynę i bezpośrednio na niej wykonać kod bajtowy. Ponieważ edycja linków jest łatwiejszym procesem, programowanie może być znacznie szybsze i bardziej wydajne.

Być może daje to przewagę w tworzeniu aplikacji, ale cytat jest wyraźną przesadą. W każdym razie kompilator Java zawarty w pakiecie Java Software Development Kit (JSDK) działa dość wolno. (Niektóre kompilatory należące do trzeciego rodzaju, na przykład kompilatory IBM, działają znacznie szybciej.) Szybkość ponownej kompilacji jest tylko jednym z czynników charakteryzujących efektywność środowiska programistycznego. Porównując szybkość środowisk programowania Java z Visual Basic, możesz być rozczarowany.

Wysoka wydajność

Chociaż powszechnie interpretowane kody bajtów mają więcej niż wystarczającą wydajność, istnieją sytuacje, w których wymagana jest jeszcze wyższa wydajność. Kody bajtów mogą być „w locie” (w czasie wykonywania) tłumaczone na kody maszynowe dla konkretnego procesora, na którym działa aplikacja.

Jeśli do wykonania kodów bajtowych używany jest interpreter, wyrażenie „ wysoka wydajność". Jednak na wielu platformach możliwy jest inny rodzaj kompilacji, zapewniany przez kompilatory synchroniczne (kompilatory JIT). Tłumaczą kod bajtowy na kod zależny od maszyny, przechowują wynik w pamięci, a następnie wywołują go w razie potrzeby. Ponieważ interpretacja wykonywane tylko raz, takie podejście wielokrotnie zwiększa szybkość pracy.

Pomimo faktu, że kompilatory synchroniczne są nadal wolniejsze niż kompilatory zależne od maszyny, w każdym przypadku działają one znacznie szybciej niż interpretery, zapewniając dla niektórych programów przyspieszenie 10 lub nawet 20-krotne. Technologia ta jest ciągle ulepszana, a ostatecznie może osiągnąć prędkość, której tradycyjne kompilatory nigdy nie przekroczą. Na przykład kompilator synchroniczny może określić, który fragment kodu jest wykonywany częściej i zoptymalizować go pod kątem szybkości wykonywania.

Wielowątkowy

Zapewnia lepszą interaktywność i wykonywanie programu.

Jeśli kiedykolwiek próbowałeś organizować obliczenia wielowątkowe w jakimś innym języku programowania, będziesz mile zaskoczony, jak łatwo jest to zrobić w języku Java. Wątki w języku Java mogą korzystać z systemów wieloprocesorowych, jeśli system operacyjny na to pozwala. Niestety implementacje wątków na większości platform bardzo się od siebie różnią, a programiści Java nie starają się osiągnąć jednolitości. Tylko kod do wywoływania wątków pozostaje taki sam dla wszystkich komputerów; Język Java przenosi implementację wielowątkowości do podstawowego systemu operacyjnego lub biblioteki wątków. (Strumienie są opisane w drugim tomie.) Mimo to łatwość organizowania obliczeń wielowątkowych sprawia, że \u200b\u200bjęzyk Java jest tak atrakcyjny do tworzenia oprogramowania serwerowego.

Dynamiczny

Pod wieloma względami Java jest bardziej dynamiczna niż C lub C ++. Został zaprojektowany, aby łatwo dostosować się do ciągle zmieniającego się środowiska. Możesz swobodnie dodawać nowe metody i obiekty do bibliotek bez powodowania żadnych szkód. Język Java ułatwia uzyskiwanie informacji o postępach programu.

Jest to bardzo ważne w przypadkach, gdy konieczne jest dodanie kodu do już uruchomionego programu. Uderzającym tego przykładem jest kod pobierany z Internetu w celu wykonania przez przeglądarkę. W Javie 1.0 wcale nie było łatwo uzyskać informacje o postępie programu wykonywalnego, ale aktualna wersja języka Java ujawnia programiście zarówno strukturę, jak i zachowanie obiektów programu wykonywalnego.
Jest to bardzo cenne dla systemów, które muszą analizować obiekty podczas wykonywania programu. Takie systemy obejmują graficzne narzędzia interfejsu użytkownika, inteligentne debuggery, komponenty wtyczek i obiektowe bazy danych.

Java i Internet

Pomysł jest prosty - użytkownicy pobierają bajty Java z Internetu i wykonują je na swoich komputerach. Programy Java z przeglądarkami WWW nazywane są apletami. Aby korzystać z apletu, potrzebujesz przeglądarki internetowej, która obsługuje język Java i jest w stanie interpretować kody bajtów. Licencja na kod źródłowy Java jest własnością firmy Sun, która nalega na niezmienność zarówno samego języka, jak i struktury jego podstawowych bibliotek. Niestety rzeczywistość nie jest taka. Różne wersje przeglądarek Netscape i Internet Explorer obsługują różne wersje języka Java, z których niektóre są znacznie nieaktualne. Ta godna pożałowania sytuacja stanowi coraz większą przeszkodę w opracowywaniu apletów w celu korzystania z najnowszej wersji języka Java. Aby rozwiązać ten problem, firma Sun opracowała program wtyczek Java, który umożliwia tworzenie najbardziej zaawansowanego środowiska do uruchamiania programów Java opartych na przeglądarkach Netscape i Internet Explorer.

Pobieranie apletu jest jak osadzanie obrazu na stronie internetowej. Aplet staje się częścią strony, a tekst zawija się w zajmowanym przez niego miejscu. Różnica polega jednak na tym, że obraz jest teraz żywy. Odpowiada na polecenia użytkownika, zmienia swoje wygląd i zapewnia transfer danych między komputerem, na którym przeglądany jest aplet, a komputerem sterującym tym apletem.

Pobieranie apletu jest jak wstawianie zdjęcia na stronę internetową. Aplet staje się częścią strony, a tekst jest zawijany wokół swojego miejsca. Faktem jest, że obraz jest „na żywo”. Odpowiada na polecenia użytkownika, zmienia swój wygląd i wykonuje transfer danych między komputerem, na którym działa aplet, a komputerem, który kontroluje ten aplet.

Na ryc. 1.1 pokazano dobry przykład Dynamiczna strona internetowa, która wykonuje złożone obliczenia i wykorzystuje aplet do reprezentowania cząsteczek. Aby lepiej zrozumieć strukturę cząsteczki, możesz ją obrócić lub powiększyć za pomocą myszy. Takie manipulacje nie mogą być realizowane na statycznych stronach internetowych, ale umożliwiają to aplety. (Ten aplet można znaleźć na stronie http://jmol.sourceforge.net.)

Figa. 1.1 Aplet Jmol

Za pomocą apletów możesz dodawać nowe przyciski i pola tekstowe do strony internetowej. Jednak takie aplety ładują się powoli przez linię telefoniczną.

Prawie to samo można zrobić przy użyciu dynamicznego języka HTML, formularzy języka HTML (Hypertext Markup Language - Hypertext Markup Language) lub języka skryptowego, takiego jak JavaScript. Oczywiście, pierwsze aplety były przeznaczone do animacji: wirujące kule, tańczące postacie z kreskówek, teksty artystyczne itp. Jednak większość z powyższych może tworzyć animowane pliki GIF, a Dynamiczny HTML w połączeniu ze skryptami robi znacznie więcej niż aplety.

W wyniku niekompatybilności przeglądarek i niespójności procesu pobierania przez powolne połączenia sieciowe aplety zaprojektowane dla stron internetowych nie były wielkim osiągnięciem. W sieciach lokalnych (intranetach) sytuacja jest zupełnie inna. Zwykle nie wiążą się z nimi problemy pasmo kanał, więc czas ładowania apletu nie jest znaczący. W sieci lokalnej możesz wybrać żądaną przeglądarkę lub skorzystać z programu Java Plug-In. Pracownicy nie mogą przenieść programu dostarczonego przez sieć w niewłaściwe miejsce ani zainstalować go niepoprawnie, a administrator systemu nie musi omijać wszystkich komputerów klienckich i aktualizować na nich programy. Wiele korporacji opracowało wiele programów przeznaczonych do księgowania towarów, planowania wakacji, zwrotu kosztów transportu itp. W formie apletów korzystających z przeglądarek.

Kiedy pisaliśmy książkę, wahadło ponownie przeszło z programów klienckich na programowanie po stronie serwera. W szczególności serwery aplikacji mogą korzystać z możliwości monitorowania maszyny wirtualnej Java, aby automatycznie ładować równowagę, integrować połączenia z bazą danych, synchronizować obiekty, bezpiecznie zamykać i ponownie ładować, a także wykonywać inne procesy niezbędne dla skalowalnych aplikacji serwerowych, które są prawie niemożliwe do prawidłowego wdrożenia. W ten sposób programiści tworzący aplikacje mieli możliwość zakupu tych skomplikowanych mechanizmów zamiast samodzielnego ich opracowywania. Zwiększyło to wydajność programistów - skupili się na logice swoich programów, nie rozpraszając ich szczegółami związanymi z działaniem serwerów.

DZWONEK

Są tacy, którzy czytają te wiadomości przed tobą.
Subskrybuj, aby otrzymywać świeże artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać Dzwon
Bez spamu