Consiglio java 7 e java 8

di il
9 risposte

Consiglio java 7 e java 8

Ho una confusione in java.
Se devo sviluppare in java 7 o java 8 la sintassi è completamente differente.
Come posso fare per risolvere tale problema? visto che ho più esperienza in java 7

C'è qualcosa che converte la sintassi da java 7 a java 8?

9 Risposte

  • Re: Consiglio java 7 e java 8

    Stupidaggine.

    Java 8 e' PERFETTAMENTE COMPATIBILE con Java 7.
    L'oppposto NON E' ovviamente vero.

    NON PUOI sviluppare in Java 8 ed eseguire con Java 7. Puoi SOLO eseguire in Java 8

    Ma puoi tranquillabente sviluppare in Java 7 ed eseguire con Java 8
  • Re: Consiglio java 7 e java 8

    Intendo dire per convenienza conviene sviluppare tutto in java 8? utilizzando solo la sintassi di java 8 visto che cambia tutto.
    1. Lambda Expressions
    2. Functional Interfaces
    3. Default methods in Interface
    4. Static Methods in Interfaces.
    5. Predicate
    6. Function
    7. Consumer
    8. Supplier
    9. Method Reference & Constructor Reference by Double Colon(::) Operator.
    10. Stream API
    11. Date & Time API ( Joda API)

    Essendo che sono abituato ad utilizzare java 7 e per me convertire ogni progetto da java 7 a java 8 mi rende le cose più difficili per il cambiamento di sintassi. Come posso procedere in questi casi?
  • Re: Consiglio java 7 e java 8

    imparareJava ha scritto:


    Intendo dire per convenienza conviene sviluppare tutto in java 8?
    Se a) inizi un progetto "nuovo", b) puoi usare Java 8 e c) "sai" usare le nuove feature, beh, sì puoi certamente iniziare a sfruttare (in modo oculato eh!) le varie novità.
    Se hai un progetto già fatto in Java 7, magari bello grosso, no, NON conviene certo riscriverlo per intero per usare le cose di Java 8. Al massimo potresti valutare se (SE) certe parti del progetto potrebbero trarre benefici dalle nuove feature.

    imparareJava ha scritto:


    utilizzando solo la sintassi di java 8 visto che cambia tutto.
    1. Lambda Expressions
    2. Functional Interfaces
    3. Default methods in Interface
    4. Static Methods in Interfaces.
    5. Predicate
    6. Function
    7. Consumer
    8. Supplier
    9. Method Reference & Constructor Reference by Double Colon(::) Operator.
    10. Stream API
    11. Date & Time API
    Sì certo sono tutte (belle) novità di Java 8 ma nulla di tutto questo è "obbligatorio" usarlo in un progetto.
    La questione è molto semplice: NON cercare di inserire a "forza" queste cose solo per il "gusto" di usarle.

    Io l'ho visto di recente, in un progetto di lavoro, contesto: CRM di una notissima banca internazionale. Usavano Java 8 e il progetto aveva 1 anno e mezzo di vita. Ma era un disastro, hanno infilato lambda e Stream API dappertutto, in qualunque buco di codice, pure ad esempio per fare un "lookup" su un "code" interno a delle enum. Hanno fatto dei giri pazzeschi solo per poter far vedere che usavano le lambda (stile bimbo piccolo: "mamma guaddda ho usato le lambda!").
    Fortunatamente sono stato lì solo 2 mesi (e oltretutto per fare altro, nemmeno tanto per sviluppo Java), poi hanno fatto dei fantomatici "tagli" e mi hanno rilasciato .... affari loro ...
  • Re: Consiglio java 7 e java 8

    Ho capito, grazie del suggerimento.
  • Re: Consiglio java 7 e java 8

    Ciao,
    dal mio punto di vista, devi capire che il tuo codice viene eseguito sulla JVM. E la JVM e' molto stabile e mantiene la retrocompatibilita' con quasi tutte le versioni di java precedenti. Un po' come le specifiche del C++. Addirittura senza toccare il codice, ipotizziamo Java 7, se fai il passaggio dalla JVM versione 7 alla version 8, hai migliori prestazioni e minor consumo di risorse. E questo succede ad ogni nuova versione con percentuali diverse ovviamente. Considera che al momento le versioni LTS supportate sono la 8 e la 11. Quindi per nuovi progetti dovresti addirittura guardare alla versione 11.

    E' inutile stare a guardare le feature della versione 8 poiche' dal punto di vista del design del prodotto/programma non ti cambia nulla. Ancora se uso IntelliJ e faccio un ciclo for (secondo certi parametri), ho il suggerimento se voglio rifattorizzare usando uno stream.
  • Re: Consiglio java 7 e java 8

    La mia confusione sta nel fatto che devo imparare nuove sintassi di java 8 e java 11 che non è semplice memorizzare e implementare, essendo che sono abituato in java 7. Voi come affrontate queste difficoltà?
  • Re: Consiglio java 7 e java 8

    Se dovessi memorizzare nuove funzionalita per ogni patch o versione di Java/qualsiasi altra libreria non la finisci piu...
    Hai mai sentito il termine refactor ? Ti faccio un esempio, nel (immenso) codebase con il quale lavoro ogni giorno ci sono delle classi con codice vecchio in cui alcune collezioni non sono parametrizzate, esempio :

    List lista = ...

    Quando ci lavori sopra dovresti cerca di aggiornare il codice (esempio): List<Integer>, questo perche :

    Generics was introduced in J2SE 5.0. Java collections' classes were not designed to be used for any particular object

    Il processo di aggiornare/modificare/adattare il codice a seconda di nuove funzionalita introdotte, migliorie nella leggibilita e performance si chiama refactoring.
  • Re: Consiglio java 7 e java 8

    Su questo ho capito, che ogni codice vecchio devi adattare a quello nuovo, su questo è fattibile.
    Ma se dovessi fare un progetto da 0 programmando ad esempio in java 8, mi tocca sempre studiare, per capire come devo svolgere il progetto e qui c'è sempre un punto ? per realizzare l'applicazione
  • Re: Consiglio java 7 e java 8

    imparareJava ha scritto:


    Su questo ho capito, che ogni codice vecchio devi adattare a quello nuovo, su questo è fattibile.
    Ma se dovessi fare un progetto da 0 programmando ad esempio in java 8, mi tocca sempre studiare
    Ma non capisco il problema/difficoltà. Se sai fare un progetto che usa le feature di Java 7 su un JDK7, sai anche fare un progetto che usa (ancora) Java 7 su un JDK8. Poi potrai sicuramente introdurre progressivamente le novità di Java 8 nel progetto. E non necessariamente devi usare "tutto" di Java 8, "subito" e/o "ovunque" sul progetto. Puoi anche partire da cose basilari che si imparano in poco/breve tempo.

    Tanto per dirne una: hai una lista (List) che contiene dei null che vuoi rimuovere. Fino a Java 7 era "noioso", dovevi prendere il Iterator, scorrere, se null invochi remove() (del Iterator! non della lista).

    Da Java 8 è banale con 1 riga:

    lista.removeIf(v -> v == null);

    o in alternativa (Objects è java.util.Objects)

    lista.removeIf(Objects::isNull);

    E questo lo impari in 2 minuti.
Devi accedere o registrarti per scrivere nel forum
9 risposte