Temat: Książka do Java w perspektywie aplikacji rozproszonych,...
najważniejsze to wielodziedziczenie i przeciążanie operatorów, ale wbrew pozorom bardzo na sposób pisania wpływają różne detale jak na przykład:
- nie możesz wymusić zwolnienia pamięci w danym momencie (ale też nie martwisz się o jej zwalnianie)
- z powyższego wynika, że nie ma destruktorów
- ogólnie jest bardzo ścisła kontrola typów i nie przechodzą sztuczki rodem z C nie mówiąc już o uniach
- nie ma rzutowania na typ logiczny boolean (ten detal wymusza czytelność warunków)
- arytmetyka na wskaźnikach połączona z rzutowaniem odpada
- nie ma preprocesora
- generics tylko wyglądają jak wzorce z C++, ale właściwie można je uznać za lepszy sposób zapisu rzutowania, więc ktoś może uznać, że mają mniejsze możliwości
- reguły dostępu klas pochodnych do składowych klasy podstawowej odpowiadają w przybliżeniu dziedziczeniu public z C++, nie ma innych rodzajów dziedziczenia
- wszystkie typy całkowite oprócz char są ze znakiem
- parametry metod zawsze są przekazywane przez wartość
- zmienne lokalne muszą być zainicjalizowane przed użyciem
- nie ma przesłaniania nazw w blokach kodu
Jest jest jeszcze parę innych ograniczeń. Właściwie wszystkie są dobrze przemyślane i są to bardzo dobre wybory.
EDIT:
Autoboxing wymieniony w poście powyżej zaliczyłbym do ulepszeń, których po prostu nie ma w C++ a takich w Javie jest mnóstwo. Marek pytał o ograniczenia :)
Zacheusz Siedlecki edytował(a) ten post dnia 25.06.08 o godzinie 04:23