50 minuti per svelare la tigre, il cavallo e sapere che esiste il delfino.
La nuova versione di Java implementa caratteristiche che da tempo erano attese
nello standard del linguaggio: Metadata, Generic Types, AutoBoxing e
Unboxing dei tipi primitivi, Static import, gestione dinamica dei Loop e delle
Enumeration.
Per Java 6: gestione di SystemTray e motori di scripting.
Vediamo di cosa si tratta e di come poter utilizzare queste nuove feature all'interno dei nostri programmi
ºÝºÝߣ introduttive al linguaggio Java 8 in preparazione alla certificazione OCA 1Z0-808.
Lezione del 12-10-2017 tenuta da Valerio Radice presso Nextre Engeneering
https://www.nextre.it/corso/corso-java-oca/
Meetup Code Garden Roma e Java User Group Roma: metodi asincroni con Spring -...Codemotion
?
Possiamo scrivere metodi asincroni anche in Java e con Spring, anche senza dover usare le ultime versioni della JVM o del framework. Si parler¨¤ di thread bloccati e altri stati del thread. Le interfacce Executor della JDK ci aiutano a gestire le chiamate asincrone; vedremo come vengono implementate in Spring. Ci saranno esempi di configurazioni XML e con annotations. Si parler¨¤ di callback hell e di come evitarlo usando la Completable Future.
ºÝºÝߣ quarta lezione al linguaggio Java 8 in preparazione alla certificazione OCA 1Z0-808.
Argomenti:
Design Pattern: Singleton
Classe Astratta
Interfaccia e interfaccia funzionale
Ereditariet¨¤ e costruttori
Super e this
Incapsulamento
Polimorfismo
Varargs
Overload e Override
Invocazione virtuale dei metodi
Lezione del 28-11-2017 tenuta da Valerio Radice presso Nextre Engeneering
https://www.nextre.it/corso/corso-java-oca/
ºÝºÝߣ della lezione 2 del corso di Python tenuto per gli studenti del Collegio Don Nicola Mazza di Padova in data 6 Aprile 2020. Argomenti trattati: script, IDLE, espressioni booleane, controllo del flusso, cicli, funzioni, classi, file
The document provides an overview of training for teachers on how to use the SchoolNet platform, including how to log in, check and edit profile information, add components to their teacher web page, and guidelines for good web design and following school policies. Teachers are instructed on navigating to their SchoolNet account, verifying their contact details, building out their classroom web page, and tips for ensuring web pages follow best practices for usability and accessibility.
Meetup Code Garden Roma e Java User Group Roma: metodi asincroni con Spring -...Codemotion
?
Possiamo scrivere metodi asincroni anche in Java e con Spring, anche senza dover usare le ultime versioni della JVM o del framework. Si parler¨¤ di thread bloccati e altri stati del thread. Le interfacce Executor della JDK ci aiutano a gestire le chiamate asincrone; vedremo come vengono implementate in Spring. Ci saranno esempi di configurazioni XML e con annotations. Si parler¨¤ di callback hell e di come evitarlo usando la Completable Future.
ºÝºÝߣ quarta lezione al linguaggio Java 8 in preparazione alla certificazione OCA 1Z0-808.
Argomenti:
Design Pattern: Singleton
Classe Astratta
Interfaccia e interfaccia funzionale
Ereditariet¨¤ e costruttori
Super e this
Incapsulamento
Polimorfismo
Varargs
Overload e Override
Invocazione virtuale dei metodi
Lezione del 28-11-2017 tenuta da Valerio Radice presso Nextre Engeneering
https://www.nextre.it/corso/corso-java-oca/
ºÝºÝߣ della lezione 2 del corso di Python tenuto per gli studenti del Collegio Don Nicola Mazza di Padova in data 6 Aprile 2020. Argomenti trattati: script, IDLE, espressioni booleane, controllo del flusso, cicli, funzioni, classi, file
The document provides an overview of training for teachers on how to use the SchoolNet platform, including how to log in, check and edit profile information, add components to their teacher web page, and guidelines for good web design and following school policies. Teachers are instructed on navigating to their SchoolNet account, verifying their contact details, building out their classroom web page, and tips for ensuring web pages follow best practices for usability and accessibility.
The document provides guidance on using the RESUMIX system to apply for federal jobs. It discusses how to write federal resumes, including focusing on relevant accomplishments using the PARS structure, addressing gaps in employment history, and ensuring the resume aligns with the specific job requirements. Frequently asked questions are answered regarding including all work history, preparing for interviews, and getting help with RESUMIX.
Social Care e-learning from Learning Pool & OphiraPaul McElvaney
?
This document discusses learning and development for adult social care. It touches on several key topics including workforce strategies, safeguarding, assessments, eligibility, support planning, managing resources, personalization, and partnership working. The document advocates for a blended learning approach combining e-learning, face-to-face training, and hands-on learning. It provides an example of how e-learning around re-enablement could be implemented and evaluated to improve outcomes and identify efficiencies.
El documento detalla los ganadores de varios premios otorgados por la organizaci¨®n I Premios Peridotita el 10 de diciembre de 2016 en Estepona. Se nombran a los ganadores de las categor¨ªas "Promesa del a?o", "Bermejo del a?o" y varios otros premios para jugadores y equipos Bermejos y Peridotitas.
Presented at the ASTC(NSW) 2012 annual conference. Editing for technical communicators, focusing on text, user interface text, etc. and some add-ins for Microsoft Word that make the process easier.
Predstavljanje e-kursa "Bolji svet: Projekti u 16 lekcija" kroz uvodnu temu - upravljanje komunikacijama i znanjem na projektima. Webinar je odr?an 12. maja 2010. godine. Predava?: Maja Vujovi?. Trajanje: 1 h 25 min. Muzika: Vladimir Mila?i?. Produkcija: Compass Communications.
Il Corso Programmazione Java Base di K-Tech (http://www.k-tech.it) ha come obiettivo quello di far comprendere le tecniche di programmazione orientata agli oggetti, cio¨¨ di modellare e ¡°pensare¡± a oggetti, di trasmettere i concetti base del linguaggio e le basi per sviluppare piccole applicazioni in modo autonomo.
Il corso Programmazione Java Base ¨¨ composto da dodici moduli:
1. Introduzione
2. Ciclo di sviluppo
3. Sintassi Elementare
4. Principi OOP
5. Classi e Oggetti
6. Concetti Object Oriented
7. Collections
8. Eccezioni
9. Input Output
10. Serialization
11. Unit Testing
12. Threads
Leggi il programma completo: http://www.k-tech.it/formazione/catalogo/programmazione_java_base
Abstract:
* Introduzione a Seam ;
* Ciclo di vita di Seam;
* Component and context;
* Absolute Inversion of Control;
* Rapid Seam development (con esempio di start-up su eclipse o se si preferisce a linea di comando);
* Differenze sostanziali con la versione 3.0 / Ajax and Javascript remoting
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
?
Questa lezione sul toolkit Qt permette di scrivere una semplice applicazione di visualizzazione immagini, i formati sono quelli pi¨´ comunemente usati: JPG, BMP, PNG etc.
Quando, come e perch¨¦ utilizzare PowerMock. Vengono analizzati i legami tra design delle applicazioni e strumenti di test. Sono presenti esempi di codice semplice ma verosimile con i rispettivi test.
Matteo baccan raspberry pi - linox 2015 - corso parte 2Matteo Baccan
?
Seconda puntata del corso Raspberry Pi tenuto per il Linox di Novara. Piccoli accorgimenti per ottimizzare il vostro raspberry, installazione LAMP server e realizzazione di una macchina virtuale
Creazione di una stazione meteo con prodotti opensource. Linux day 2014 - Lin...Matteo Baccan
?
Per Linux Day 2014 a Novara abbiamo discusso di come costruire una semplice stazione meteo con raspberry Pi e componenti opensource. Queste sono le slide del mio intervento, che parlava della parte software scritta per leggere e visualizzare i sensori connessi a Raspberry Pi
Matteo baccan raspberry pi - linox 2014Matteo Baccan
?
Introduzione a Raspberry Pi
Cos¡¯¨¨? A chi ¨¨ rivolto? Cosa ci posso fare? Cosa ci collego? Mi serve? A queste, e ad altre domande, proveremo a dare una risposta
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un¡¯architet...Matteo Baccan
?
Vedremo all¡¯opera un¡¯architettura basata su un cluster Raspberry Pi, con tutti gli hack necessari per poter utilizzare e ottimizzare applicazioni preesistenti basate su JAVA e PHP.
Verranno illustrati tutti quei piccoli accorgimenti che ci permettono di sfruttare al meglio le risorse limitate di questa architettura, in modo da capire cosa ¨¨ possibile fare e cosa non ¨¨ consigliabile fare.
Codemotion 2012 : Sphinx: Open Source Search ServerMatteo Baccan
?
Codemotion 2012 : Sphinx: Open Source Search Server
Sporchiamoci le mani con un'alternativa a Lucene e MySQL. Un prodotto OpenSource, portabile, veloce, attento alle prestazioni e ai consumi di spazio e memoria. Vedremo come distribuire il carico, come effettuare hotswap di indici, come usare lo stesso JDBC per accedere a MySQL e Sphinx, come gestire indici dinamici e statici. Utilizzeremo query, subquery, strategia di ricerca diverse. Studieremo le migliori tecniche per indicizzare milioni di documenti, il tutto tramite PHP e JAVA su casi reali
Twitter ¨¨ la pi¨´ grossa piattaforma di microblogging del mondo
Vedremo come ¨¨ possibile programmarla in Java e PHP
Se non sapete cosa vuol dire OAuth, REST API, Search API e Streaming API, se CURL vi
sembra il nome di un partito politico, se la pigrizia governa la vostra vita e non vi
muovete senza un SDK dedicato ad ogni piattaforma che programmate, allora siete nel
posto giusto.
Codemotion 2011
1. Tiger, Mustang e Dolphin: le nuove caratteristiche di JAVA 5, 6 ... 7(?) Roma 2 Dicembre 2006
2. Tiger: le nuove caratteristiche di Java 5 Relatore: Matteo Baccan [email_address] Data: Roma 2/12/2006 10:00 Area: Programming & development Target: Tecnici Difficolt¨¤: Media 50 minuti per svelare la tigre, il cavallo e sapere che esiste il delfino. La nuova versione di Java implementa caratteristiche che da tempo erano attese nello standard del linguaggio: Metadata, Generic Types, AutoBoxing e Unboxing dei tipi primitivi, Static import, gestione dinamica dei Loop e delle Enumeration. Per Java 6: gestione di SystemTray e motori di scripting. Vediamo di cosa si tratta e di come poter utilizzare queste nuove feature all'interno dei nostri programmi
3. Obiettivi Dopo aver completato questo seminario sarai in grado di: Descrivere le nuove caratteristiche di Java 5 Sfruttare i nuovi costrutti che sono stati introdotti con Tiger, attendendo Mustang (Java 6) e Dolphin (Java 7) Creare codice pi¨´ compatto ed efficiente Migliorare lo stile della tua programmazione
4. Storia 1995 Java 1.0 Prima release 1997 Java 1.1 Gestione degli eventi, ereditariet¨¤, miglioramento della JVM 1999 Java 1.2 Swing, list, set, hashmap 2000 Java 1.3 Performance 2001 Java 1.4 Nuovo IO, XML, ASSERT 2004 Java 5 La svolta!! 2006 Java 6 RC a breve sui vostri schermi: http://java.sun.com/ 2008 java 7 snapshot disponibili su https://jdk7.dev.java.net/
5. Tiger Metadata (Annotations) Generics AutoBoxing e Auto-Unboxing Static import Foreach Enumeration Varargs Input/Output formattati (estesa in Java 6) Network (estesa in Java 6) Diagnostica e monitoring (estesa in Java 6) Property: setXXX() getXXX() (Java 7)
6. Riferimenti Q: Cos'¨¨ JCP? Java Community Process (http://www.jcp.org) A: Fin dalla sua introduzione, nel 1998, ¨¨ un processo nato per sviluppare e revisionare le specifiche tecniche di Java e le sue implementazioni. JCP contribuisce all'evoluzione della piattaforma Java cooperando con la comunit¨¤ internazionale di sviluppatori. Java 5 Tiger JSR-014 Generics JSR-175 Metadata JSR-201 Foreach, Boxing/Unboxing, enumeration etc Java 6 Mustang JSR-223 javax.script API : Java 6 : esecuzione di PHP, JavaScript, Java, Python, Ruby, Tcl etc etc ( https://scripting.dev.java.net/ ) 202: Class File Update, 199: Compiler API, 269: Annotation Processors, 221: JDBC TM 4.0 software, 223: Scripting, 105: XML Digital Signature, 173: Streaming API for XML, 222: JAXB 2.0, 250: Common Annotations, 181: WS Metadata, 224: JAX-WS 2.0
7. JAVAC Nuove opzioni di compilazione di Javac: -source 1.5: Abilita l'uso delle nuove caratteristiche di Java 5 all'interno dei sorgenti (-target 1.5 ¨¨ implicito) -target 1.5: Abilita javac a usare ne nuove feature di Java 5 all'interno di librerie e virtual machine -Xlint: Abilita javac a produrre dei warning su costrutti legali ma logicamente sospetti come, ad esempio, la dichiarazione di una classe Serializable senza la definizione di un serialVersionUID.
8. Metadata/Annotations Un sistema per poter arricchire il codice con nuove informazioni Vantaggi Permette a tool che agiscono su codice Java di non ricorrere a file di propriet¨¤ esterni Permette di semplificare la manipolazione del codice Arricchisce i programmi di nuove informazioni Non influisce sulle performance Sintassi @ annotation( [param=valore] ) Esempio 01
9. Metadata/Annotations Enum RetentionPolicy: Indica la validit¨¤ dei metadata: CLASS: Le annotazioni sono registrate nel file .class dal compilatore ma non sono mantenute dalla VM a runtime RUNTIME: Le annotazioni sono registrate nel file .class dal compilatore e mantenute dalla VM a runtime, cosi possono essere lette tramite reflection SOURCE: Le annotazioni sono scartate dal compilatore
10. Generics Permette la scrittura di classi generiche (C++ Template) Elimina il problema del runtime-casting Sposta gli errori nella fase di compilazione Javac non ¨¨ il primo compilatore java a supportare i Generics. Il primo ¨¨ stato: Pizza . http://pizzacompiler.sourceforge.net/ Esempio 02
11. Generics ¨C 1.4 senza public static void main(String[] args) { List myIntList = new LinkedList(); // Object container myIntList.add(new Integer(2)); myIntList.add("String"); Integer iValue1 = (Integer)myIntList.get(0); Integer iValue2 = (Integer)myIntList.get(1); System.out.println( "*"+iValue1.intValue()+"*" ); System.out.println( "*"+iValue2.intValue()+"*" ); } Exception in thread "main" java.lang.ClassCastException: java.lang.String at gen14.main(gen14.java:10)
12. Generics ¨C 5 con public static void main(String[] args) { List<Integer> myIntList = new LinkedList<Integer>(); //container myIntList.add(new Integer(2)); myIntList.add("String"); Integer iValue1 = myIntList.get(0); Integer iValue2 = myIntList.get(1); System.out.println( "*"+iValue1.intValue()+"*" ); System.out.println( "*"+iValue2.intValue()+"*" ); } gen1.java:8: cannot find symbol symbol : method add(java.lang.String) location: interface java.util.List<java.lang.Integer> myIntList.add("String");
13. Generics ¨C una classe public class gen2<GEN> { GEN uno; GEN due; public static void main(String[] args) { gen2<Integer> myInt2 = new gen2<Integer>(); myInt2.setUno( new Integer(10) ); myInt2.setDue( new Integer(7) ); System.out.println( myInt2.getUno()+myInt2.getDue() ); } public void setUno( GEN arg ) { uno = arg; } public void setDue( GEN arg ) { due = arg; } public GEN getUno() { return uno; } public GEN getDue() { return due; } }
14. Auto boxing/unboxing Capacit¨¤ di convertire tipi primitivi in oggetti e viceversa Presente anche in altri linguaggi, ad esempio: C# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfBoxingUnboxingPG.asp Esempio 03
15. Auto boxing/unboxing - prima private static final Integer ONE = new Integer(1); public static void main(String[] args) { // Frequenza di stringhe Map m = new TreeMap(); for (int i=0; i<args.length; i++) { Integer freq = (Integer) m.get(args[i]); m.put(args[i], freq==null ? ONE : new Integer(freq.intValue() + 1)); } System.out.println(m); }
16. Auto boxing/unboxing - dopo public static void main(String[] args) { // Frequenza di stringhe Map<String,Integer> m = new TreeMap<String,Integer>(); for (String word : args) { Integer freq = m.get(word); m.put(word, freq==null ? 1 : freq+1 ); } System.out.println(m); }
17. Static import Permette di importare dei metodi static, risolti a livello di compilazione Si possono importare singoli metodi, l'intera classe o l'intero package Semplice da usare NB: All'uso dell'import static cambia la versione del .class: da 0x30 (1.4 compatibile) a 0x31 (1.4 non compatibile) Esempio 04
18. Static import import static java.lang.Math.max; // Singolo metodo import static java.lang.Math.*; // Tutti gli static public class impo2 { public static void main(String[] args) { int uno = 10; int due = 20; System.out.println( max( uno, due ) ); } }
19. Foreach Nuovo modo di scrivere i cicli, il for viene potenziato Chiarezza: Molto pi¨´ chiaro da scrivere e leggere, meno codice Errori: Minor uso di variabili temporanee, non c'¨¨ il rischio di fare cicli annidati incrociati Compilatore: Pensa a tutto lui EnhancedForStatement: for ( FormalParameter : Expression ) Statement Esempio 05
20. Foreach ¨C l'evoluzione // Old Style Vector c = new Vector(); for( Enumeration e = c.elements(); e.hasMoreElements(); ) String x = (String) e.nextElement(); // New Style Vector<String> c = new Vector<String>(); for( String s : c ) String x = s;
21. Enumerations Prima public static final int matteo = 0; public static final int andrea = 1; public static final int francesco = 2; Problemi Non typesafe. Sono solo numeri non li posso "raggruppare" in un tipo Le costanti sono "compilate" nel codice Se cambio l'ordine o tolgo una costante ho un errore runtime Esempio 06
22. Enumerations Soluzione Introduzione delle enum public enum nomi { matteo, andrea, francesco }; Gestione del tipo Non compilazione nel codice Gestione degli errori Da non confondere con le enum di C (non sono classi, sono compilate come le final) Vantaggi Sono classi e sono quindi estendibili e possono implementare un'interfaccia
23. Enumerations public enum nomieta { matteo(35), andrea(30), francesco(30); private final int eta; nomieta( int v ){ eta = v; } public int eta(){ return eta; } }; Uno sguardo al decompilato ...
24. Varargs Possibilit¨¤ di definire un numero di parametri variabile public class varTest { public static void main(String[] args) { varTest x = new varTest(); x.testArg( "ciao", "io", "sono", "Matteo", 10, 20 ); } void testArg(Object ... args) { for( Object s : args ) { System.out.println( s ); } } } Esempio 07
25. Input/Output formattati // Grazie a varargs abbiamo un output formattato System.out.printf("[%s] [%5d] [%5x]\n", "Matteo", 33, 2459); // Input formattato Scanner s= new Scanner(System.in); System.out.println( "Ciao come ti chiami? " ); String str = s.next(); System.out.println( "Quanti anni hai? " ); int val = s.nextInt(); s.close(); // Java 6 introduce %n = in base alla piattaforma genera un \n (Unix) \r (Mac) (\r\n) Windows System.out.printf("[%s] [%5d] [%5x]%n", "Matteo", 33, 2459); Esempio 08
26. Network Introduzione dei timeout a livello di classe: URLConnection.java public void setConnectTimeout (int timeout) { if (timeout < 0) throw new IllegalArgumentException("..."); connectTimeout = timeout; } public void setReadTimeout (int timeout) { if (timeout < 0) throw new IllegalArgumentException("..."); readTimeout = timeout; } Fino a JDK 1.4: settaggio di sistema comune a tutte le istanze -D sun.net.client.defaultConnectTimeout =... -D sun.net.client.defaultReadTimeout =...
27. Network Introduzione del ¡°PING¡± nella classe InetAddress public boolean isReachable (int timeout) throws IOException { ... } Miglioramento del supporto dei Cookie ( CookieHandler) (Java 6 CookiePolicy, CookieStore) Miglioramento della gestione dei Proxy server: si possono gestire le casistiche di non connessione col server Fino a JDK 1.4: settaggio di sistema comune a tutte le istanze -D http.proxyHost =... -D http.proxyPort =...
28. Java 6: NetworkInterface NetworkInterface.getNetworkInterfaces() : accesso alle informazioni relative alle interfacce di rete attive Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces(); for (NetworkInterface netint : Collections.list(nets)) { console.printf("Display name: %s%n", netint.getDisplayName()); console.printf("Name: %s%n", netint.getName()); .... Esempio 08a
29. Java 6: TrayIcon // AWT introduce l'accesso alla SystemTray if (SystemTray.isSupported()) { SystemTray tray = SystemTray.getSystemTray(); .... Image image = Toolkit.getDefaultToolkit().getImage("tray.gif"); PopupMenu popup = new PopupMenu(); ... TrayIcon trayIcon = new TrayIcon(image, "Tray Demo", popup); Esempio 11
30. Java 6: JSR 223 Integrazione con gli interpreti di script (PHP, Ruby, Javascript, ...) ScriptEngineManager manager = new ScriptEngineManager(); List<ScriptEngineFactory> factories = manager.getEngineFactories(); for (ScriptEngineFactory factory: factories) { ScriptEngine engine = factory.getScriptEngine(); } ScriptEngine engine = manager.getEngineByName("javascript"); try { Double hour = (Double)engine.eval( "var date = new Date();" + "date.getHours();"); ... } catch (ScriptException e) { System.err.println(e); } Esempio 12
31. Java 6: Varie // isEmpty() String dummy = ""; dummy.isEmpty(); public boolean isEmpty() { return count == 0; } // Input di stringhe senza output Console console = System.console(); char password[] = console.readPassword("Enter password: ");
32. Non abbiamo parlato di Sicuramente da approfondire Concurrency Utilities Sono una serie di costrutti di alto livello che includono: executors, che sono un framework per la creazione di thread, code thread safe, Timers, locks e altre primitive di sincronizzazione JDBC 4.0 Java Compiler API Desktop API
33. Riferimenti Java 5 download http://java.sun.com/javase/downloads/index.jsp Breve storia delle versioni di Java http://www.java.com/en/javahistory/ Java Community Process http://www.jcp.org Mokabyte ¨C j2se 1.5 beta1 http://www.mokabyte.it/2004/03/jdk1_5.htm Esempi di codice http://zamples.com/JspExplorer/samples/samplesJDK1_5.html Dove poter scaricare questo materiale http://www.baccan.it