Założenia projektowe Javy Wstęp do Javy Założenia projektowe Javy prostota, proste podstawowe pojęcia, programowanie w Javie nie powinno wymagać długiego szkolenia obiektowość, język zaprojektowany od początku z myślą o obiektowości, znajomy wygląd, podobieństwo do C/C++, odporność i bezpieczeństwo, kontrola w czasie kompilacji i wykonania, brak wskaźników, stworzona do pracy w rozproszonym środowisku, neutralność architektury i przenaszalność bajtkod i JVM, ścisła definicja wbudowanych typów danych, wysoka wydajność, język interpretowany, z wątkami i dynamicznym łączeniem 2/17/2019
Główne cechy typy wbudowane byte (8), short(16), int (32), long(64), float (32), double (64), char (16, unicode), boolean, operatory takie jak w C/C++ (dodany >>> do bezznakowego przesuwania w prawo, + do łączenia napisów), tablice naprawdę są, są tworzone dynamicznie, jest sprawdzanie poprawności odwołań, napisy obiekty Javy, String i StringBuffer, nie ma goto, są wielopoziomowe instrukcje break i continue, zarządzanie pamięcią z odśmiecaniem jest new ale nie ma delete, wbudowana obsługa współbieżności synchronized, model monitorów. 2/17/2019
Co usunięto z C/C++ nie ma typedef (są klasy), nie ma preprocesora (np. #define (są stałe)), nie ma plików nagłówkowych (kompilator generuje z plików źródłowych pliki binarne z niezbędnymi informacjami), nie ma struktur i unii (są klasy), nie ma funkcji (są metody), nie ma wielodziedziczenia klas (jest wielodziedziczenie interfejsów), nie ma instrukcji goto (choć słowo goto jest zastrzeżone), nie ma przeciążania operatorów (ale jest dociążanie metod), nie ma niejawnych przekształceń (koercji) typów (można je zapisywać jawnie), nie ma wskaźników (są klasy, zmienne których wartościami sa obiekty albo null, tablice, obiekty reprezentujące napisy), nie ma delete (jest automatyczne odśmiecanie). 2/17/2019
Co jest z C/C++ klasy, konstruktory, new (konieczne do tworzenia obiektów, sama deklaracja zmiennych nie wystarcza), this, metody metody finalize (zamiast destruktorów), podklasy, sterowanie dostępęm do składowych: public, protected, private, bez nazwy (przyjacielski) zmienne klasowe i instancyjne, abstrakcyjne klasy i metody, większość składni (i semantyki) instrukcji i wyrażeń. 2/17/2019
Łyżka dziegciu Java jest prosta: „The Java language specification” (wyd. 1) Goosling, Joy, Steele, 1996, 821 str. „The Java language specification” (wyd. 2) Goosling, Joy, Steele, Bracha 2000, ok.. 450 str. (wyrzucono opis standardowych pakietów), „Język C++” (2-ga wesja, 91/93), Stroustrup, 700 str. (wydanie polskie) „Język C++” (3-cia wesja, 97+), Stroustrup, 976 str. (wydanie polskie) (dodano opis standardowych bibliotek), do Javy jest świetna dokumentacja: To prawda, ale (dane o jdk 1.3): tutorial (b. dobry zresztą) 16,7 M spec. języka (p. wyżej) 1,6 M pozostała dokumentacja 112,5 M (w tym opis API 97,3 M) Java jest szybka i wydajna: bez komentarza 2/17/2019