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.

Sadržaj