Newsgroup: it.comp.lang.c
Titolo: tra Java e C, quali sono le differenze?

Salve
a parte l'oop di Java, perchï¿œ un programmatore sceglie l'uno o l'altro?
Se devo sviluppare applicazioni che utilizzano la rete, e magari fanno 
un largo uso di interfacce grafiche, puï¿œ Java essere la soluzione migliore?
Ho visto che anche per soluzione embedded Java 'va di moda'....
ciao

 Ho visto che anche per soluzione embedded Java 'va di moda'....
Giï¿œ. Recentemente ho scoperto che alcuni (molti, forse tutti?) i decoder 
per il digitale terrestre fanno uso di Java nel software.
Enrico

 Ho visto che anche per soluzione embedded Java 'va di moda'....
Certo, basti pensare alla miriade di giochi e applicazioni per cellulari 
creati tramite J2ME.

 interfaccie grafiche, le grandi richieste di mercato.
Forse rispetto a C, non certo in assoluto.
-- 
-riko

 Forse rispetto a C, non certo in assoluto.
Ovviamente rispetto a C.

Enrico Bassetti ha scritto:

al massimo gtk, wxwidgets ï¿œ per c++

 a parte l'oop di Java, perch� un programmatore sceglie l'uno o l'altro?
Sono adatti ad ambiti diversi. Non sono linguaggi confrontabili.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Insomma... alle volte possono pure convivere, in altri ambiti sono in
concorrenza, esempio:
sviluppo di giochi applicazioni per i nokia s60, si possono sviluppare
sia in C/C++ che in Java
sviluppo applicazioni desktop: possono essere sviluppate sia in java che
in c
esempio di coesistenza le swt le librerie di eclipse hanno del codice c
che si aggancia alle api native per fornire una ui indipendente dal
sistema operativo a livello di programmazione ma nativa lato java, etc..
molto embedded adesso si pu� fare tanto in java quanto in c.
Java � molto diffuso lato server dove invece i cgi scritti in c magari
ce ne sono pochi, per� webserver ce ne sono sia di scritti in c che in java.
Java � pi� semplice e le librerie fornite con il linguaggio il jdk sei
sicuro di ritrovartele su un altro os che supporta il jre, mentre ad
esempio potresti avere delle librerie c come le ncurses che magari su
windows non sono disponibili, questo perch� lo standard c non prende in
considerazione cose come ui, grafica, network, thread, che sono lasciate
a librerie esterne perch� troppo dipendenti dal sistema operativo,
inoltre in C i tipi dipendono dal processore mentre in java puoi stare
sicuro che un int � un signed 32bit su ogni implementazione conforme
alle specifiche sun.
Programmare in java � mediamente se non pi� semplice che � un termine
che rende poco, diciamo pi� gratificante perch� non devi lottare per
esempio con le stringhe del c, fonte infinita di bug anche per
programmatori navigati.
Inoltre se hai un programma in C e lo vuoi portare su un altra
piattaforma come minimo devi ricompilare in java no, ammesso e non "con
cesso" che esista una java virtual machine degna per quella piattaforma.
Per java trovi inoltre librerie molto semplici da usare anche per
compiti particolari come grafici, comunicazione interprocess,
manipolazione di file excel, pdf, etc...
Altra differenza ma potrebbe essere di livello prettamente burocratico
dietro il C c'� uno standard internazionale mentre dietro java c'� sun e
ad esempio se vuoi un corso o una certificazione per java non ci sono
problemi e sono abbastanza riconosciute.
sintesi? fa comodo conoscere sia java che c.

 Insomma... alle volte possono pure convivere,
Che possano convivere non significa che siano confrontabili. Io parlo dei
linguaggi, non di ci� che puoi fare con essi: sono due cose diverse, non
sono confrontabili.


 
Scusa ma la parola ambiti mi ha tratto in inganno, per� sinceramente io
sono dell'idea che tutto sia confrontabile con tutto alle brutte la
conclusione � che siano totalmente diversi.
Comunque paragoni tra linguaggi li trovi ovunque sul web, esempio:
http://leepoint.net/notes-java/deployment/applications_and_applets/05intro/60JavaVsC.html
Poi se te parli solo ed esclusivamente del linguaggio non sono cosi
tanto diversi, sintassi simile, oo uno e procedurale l'altro (in realt�
si pu� fare uno stile di programmazione oo anche in C anche se
mancheranno ovviamente i costrutti basta vedere cosa fa gdk con le
macro, rendendo il C almeno concettualmente OO)
ognuno la pensa a modo suo

 conclusione � che siano totalmente diversi.
Tu puoi pure confrontare, ma non � detto che il confronto abbia senso.
Il mio termine "confrontabile" sottintende che ci siano almeno gli
elementi base per portare avanti un confronto. Se so gi� (come so gi�) di
poter dire che due linguaggi sono totalmente diversi, non mi cimento
nell'analisi dettagliata delle differenze: tempo perso. Confrontare il C
con Java non ha assolutamente senso: due paradigmi di programmazione
totalmente diversi.
Se il fatto che un linguaggio sia object-oriented e l'altro procedurale ti
porta a dire che "be', non sono poi tanto diversi", allora perdonami ma
non deduco che non sai di che stai parlando.


 non deduco che non sai di che stai parlando.
Errata corrige: "allora perdonami ma deduco che non sai di che stai



Comincia anche ad essere una scelta non stupida da quando una parte
viene eseguita hardware su certi micro (ARM Jazelle)

 
mai usato C + GDK...
la programmazione object oriented la puoi fare anche con linguaggi che
non la supportano, anche se ammetto � una bella fatica.

michelangelo giacomelli ha scritto:

prima che mi sputi addosso di nuovo leggi ad esempio:
http://www.eventhelix.com/RealtimeMantra/basics/object_oriented_programming_in_c.htm
o
http://www.gtk.org
quindi ripeto, per opinione personale java e c sono paragonabili,
concludendo che alla fine:
* se vuoi utilizzare la oop forse � meglio java a meno che tu non debba
interfacciarti con librerie pre esistenti
* la sintassi degli if,for,case etc, � molto simile
* se non vuoi dipendere da un runtime peso come il mio culo � meglio il C
* per costruire gui swing � molto molto pi� semplice di GTK
* per librerie comuni che almeno su linux sono uno standard tipo sdl,
opengl, gtk, sqlite, mysql le utilizzi da C nativamente e da Java
tramite wrapper (spesso Onject Oriented)
in questo senso java e C sono confrontabile
io so di cosa sto parlando.

 
un altra lettura interessante su come implementare l'oop in C � questa:
http://www.planetpdf.com/codecuts/pdfs/ooc.pdf