View Full Version : [JAVA]Chi ha già provato java 1.5-beta?
Chi ha già provato java 1.5???
Ho scaricato la versione beta sdk 1.5 Volevo provare le nuove features introdotte al linguaggio ma non sono riuscito a compilare neanche mezza classe. :cry: Eppure nella documentazione viene menzionato cosa è stato aggiunto.
Qualcuno ne sa qualche cosa?
Ciao
;)
per compilare devi indicare la versione del sorgente e la versione di destinazione del bytecode:
javac -source 1.5 -target 1.5 MiaClasse.java
C'è tutta una batteria di novità con cui sbizzarrisi:
import java.util.*;
import static java.lang.Math.*;
public class Prova {
public static void main(String... a) {
//FOR EACH
int[] array = {10, 20, 30};
for(int e : array) {
System.out.println(e);
}
//AUTOBOXING
Integer numero = 5;
numero += 10;
System.out.println(numero);
//IMPORT STATICO
float f = 0.5f;
f = abs(f);
System.out.println(f);
//GENERICI
class Coppia {
int x, y;
Coppia(int x, int y) {
this.x = x;
this.y = y;
}
};
Vector<Coppia> vettore = new Vector<Coppia>();
vettore.add(new Coppia(10, 20));
vettore.add(new Coppia(30, 40));
int x = vettore.get(0).x;
int y = vettore.get(0).y;
}
}
Poi ci sono le strutture "enum", l'output formattato...
dr.stein
13-02-2004, 17:49
//AUTOBOXING
Integer numero = 5;
numero += 10;
System.out.println(numero);
:confused:
ovvero ?
E' una pura comodità.
numero è un Integer, un oggetto che incapsula un valore intero.
Prima della 1.5, l'assegnamento
Integer numero = 5
non era possibile, a destra c'è un "int" (primitivo) a sinistra un Integer (riferimento).
L'autoboxing permette al compilatore di incapsulare direttamente il primitivo a destra in un riferimento "wrapper" Integer prima dell'assegnamento.
In Java era piuttosto scomodo lavorare su collezioni di primitivi, perchè si era obbligati ad usare esplicitamente un wrapper "in entrata" ed un casting/estrazione in uscita.
int[] primitivi = {10, 20, 30};
Vector<Integer> vettore = new Vector<Integer>();
for(int e : primitivi) {
vettore.add(e);
}
for(Integer e : vettore) {
System.out.println("vettore: "+e);
}
int valore = vettore.get(0) + 50;
System.out.println(valore);
E' facile notare come adesso le cose si siano fatte decisamente più semplici.
dr.stein
13-02-2004, 19:16
capito capito! :D
non avevo notato l'Integer anziche' l'Int! :D
le novità ci sono, nei prossimi giorni mi metto a sperimentare :)
l'autoboxing è comodissimo, era ora!!!
Là, scovato sul forum sun.
Java 1.5 samples (http://zamples.com/JspExplorer/samples/samplesJDK1_5.html)
Poi non dite che non vi voglio bene! :D
Ciao.
Originariamente inviato da PGI
Là, scovato sul forum sun.
Java 1.5 samples (http://zamples.com/JspExplorer/samples/samplesJDK1_5.html)
Poi non dite che non vi voglio bene! :D
Ciao.
:D Mooooolto bene!!!!
Grazie questa ogi ho ha dafe un to di prove e da modificare un tot di codice...
Grazie ciao
Mi spiegate anche perchè se faccio
enum Suit { clubs, diamonds, hearts, spades };
for (Suit suit : Suit.values())
System.out.print(suit);
mi aspetto d'avere
1 2 3 4
invece mi stampa
clubs diamonds hearts spades
mmm mistero
:muro:
ciao
E' una scelta dei progettisti quella di dotare le costanti degli enum di un output significativo.
[edit]
Ho dimenticato il link :coffee:
http://jcp.org/aboutJava/communityprocess/jsr/tiger/enum.html
Originariamente inviato da dr.stein
capito capito! :D
non avevo notato l'Integer anziche' l'Int! :D
Cos'è Int? una nuova classe?
:rolleyes: :D
Originariamente inviato da PGI
E' una scelta dei progettisti quella di dotare le costanti degli enum di un output significativo.
[edit]
Ho dimenticato il link :coffee:
http://jcp.org/aboutJava/communityprocess/jsr/tiger/enum.html
Grazie tante sei un mito... domani ci guardo bene poi ti faccio sapere:D :D :D
Ciao
Ok sono riuscito a sperimentare... Ma mi facevo la seguente domanda:
Se volessi creare delle applicazioni scritte in java 1.5 ma compattibili con le vecchie versioni?
Ho provato a fare
javac -source 1.4 -target 1.5 MiaClasse.java
ma il comilatore mi dice che se utilizzo la sintassi 1.5 mi compla 1.5....
Mi sembra veramente limitante.
Cosa ne pensate?
Ciao
E' molto limitante, ma il salto tra la 1.4 e la 1.5 è veramente ampio.
Vedremo con la versione stabile di Tiger cosa deciderà di fare Sun, io spero che lanci una "campagna" per stimolare l'upgrade di Java da parte degli sviluppatori/utenti, girano ancora dei "Java 1.2", una cosa che mi fa imbufalire perchè l'aggiornamento del runtime è tutto fuorchè impegnativo.
Per me avrebbe dovuto fare, già che c'era, una cosa ancora più drastica, dichiarare la 1.5 incompatibile con le versioni precedenti e cominciare ad eliminare (finalmente) un po' di "deprecated" (sono 6 anni che bisogna fare un casting esplicito da Graphics a Graphics2D, francamente mi sembrerebbe giunta l'ora di levarselo dai marroni stò "graphics").
Originariamente inviato da Passy
Ok sono riuscito a sperimentare... Ma mi facevo la seguente domanda:
Se volessi creare delle applicazioni scritte in java 1.5 ma compattibili con le vecchie versioni?
Ho provato a fare
javac -source 1.4 -target 1.5 MiaClasse.java
ma il comilatore mi dice che se utilizzo la sintassi 1.5 mi compla 1.5....
scusa ma non è il contrario? source 1.5 target 1.4
secondo me è giusto xche il target e il come compilarlo il source intende quale è la vers che compili.
Smentiscimi pure se canno :D
Si scusate ho scritto al contrario :rolleyes: !!!
sono un po' sbadato...
Per rispondere a PGI:
Hai ragione ma pensate che l'utente medio ha "Paura" a fare certe oparazioni...
Io quando scrivo delle applet le compilo con un JVM 1.18 così che possano essere compattibili anche con pc in cui non è installata una versione aggiornata di Java...
Le nuove funzionalità sono veramente pratiche e compattano il codice ma se la Sun dovesse toglierre la retrocompattibilità con le nuove funzionalità vi immaginate che perdita di tempo ad aggiornare codice vecchio con nuovo!!!
Sono un po' perplesso
Provate a fare girare su una 1.2 del codice 1.4 che contenga una costante della classe Color... o viceversa...
Non funziona! Chissà perchè nella 1.4 hanno definito MAIUSCOLE le costanti BLACK, WHITE, RED, ecc... Mah!
Lì le maiuscole le hanno messe perchè hanno rilasciato lo standard di formattazione del codice sorgente dopo aver "inventato" il sorgente...un po' come la proverbiale pelle d'orso venduta prima di aver ucciso il plantigrado.
Qui c'è lo "standard ufficiale"
http://java.sun.com/docs/codeconv/
E' un'altra cosa che potrebbero sistemare dando un taglio brutale al passaggio di versione. Tolgono definitivamente le minuscole e via.
ma LinkedList<String> stringList = new LinkedList<String>(); è uguale a std::list<std::string> stringList; ???
Cioe finalmente si ha un minimo supporto alla programmazione generica?
Il supporto alla programmazione generica è totale. Ci vorrà un po' per abituarsi alla sintassi "sporca" introdotta (adesso fa quasi schifo come quella di [ggiungere il nome del linguaggio che vi piace meno]), forse di meglio non si poteva fare.
Ho capito rimbocchiamoci le maniche e... si riscrive tutto:D :D :sofico:
Ho trovato un tool per utilizzare il codice 1.5 ma compilare in 1.4
http://retroweaver.sourceforge.net/
Ciao ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.