4. Java i C
Osnovne razlike C-a i Jave su sljedeće:
- Java ne podržava pokazivače.
Pokazivači u C++ su nesigurni i omogućavaju pristup nedefiniranim memorijskim adresama, što dovodi do programskih pogrešaka koje je izuzetno teško pronaći. Umjesto pokazivača, Java posjeduje reference.
- Java nema strukture i skupove.
Strukture i skupovi postali su u Javi nepotrebni jer se mogu realizirati pomoću klasa. Kada deklariramo novu klasu, zapravo smo stvorili novi tip podataka, novu strukturu podataka.
- Java ne podržava preopterećivanje operatora.
Preopterećivanje operatora u C-u može dovesti do programskih kodova koji se mogu dvosmisleno i pogrešno tumačiti. Problemi su posebno očiti kada na razvoju programa radi veća skupina programera, od kojih svaki različito preopterećuje operatore. Jedini operator koji je preopterećen u Javi je operator + , koji omogućava zbrajanje i, istovremeno, spajanje stringova.
- Java ne obavlja automatske pretvorbe svih tipova podataka.
Java će pretvoriti samo one tipove prilikom čije pretvorbe se ne gubi na preciznosti, dok je ostale pretvorbe potrebno naglasiti. U C-u je moguće pretvarati iz bilo čega u bilo što, ali nikada nismo sigurni što ćemo točno dobiti.
- Java koristi klase.
Klase sadrže skupine metoda i varijabli. Zbog toga u Javi ne postoje globalne varijable ili globalne funkcije kao u C-u.
- Java ne podržava nepredznačene brojeve.
Svi brojevi u Javi označeni su predznacima.
- Java ne podržava typedef.
- Java ne podržava
goto.Evo što Java ima, a C nema:
- Višenitnost.
C++ ne podržava višenitno izvršavanje programa.
- Java drugačije pristupa memoriji.
Java ne sadrži operator
delete za brisanje podataka iz memorije. Brisanje objekata iz memorije zadaća je Javinog sustava za prikupljanje smeća.- Naredbe break i continue.
Ove naredbe u Javi podržavaju skokove na labele, čime je izbjegnuta potreba za postojanjem naredbe
goto.- Duljina znakovnog tipa.
Tip char u Javi je dugačak 16 bitova.
Ovdje su navedene samo neke razlike i samo neke prednosti Jave u odnosu na C. Sve drugo ulazilo bi previše u detalje oba programska jezika, a to nije cilj ovoga seminara.