Technological inventions for your business Avvio alla professione di Java Architect Corso interno di formazione e Training on the Job Tinvention – Ingegneria Informatica – http://tinvention.net/ Sommario 1 2 3 4 5 L’azienda ..........................................................................................................................................3 Obiettivi ............................................................................................................................................3 Requisiti minimi ...............................................................................................................................3 Organizzazione .................................................................................................................................3 Argomenti del corso teorico .............................................................................................................4 5.1 Linguaggio Java Standard ............................................................................................................4 5.1.1 Introduzione a Java .............................................................................................................4 5.1.2 OO in Java ..........................................................................................................................4 5.1.3 Librerie di Utilità: java.util .................................................................................................5 5.1.4 Costrutti avanzati di Java e libreria I/O ..............................................................................5 5.1.5 Multithreading ....................................................................................................................5 5.1.6 Java Data Base Connectivity ..............................................................................................6 5.1.7 Using XML in Java ...........................................................................................................6 5.1.8 Networking .........................................................................................................................6 5.1.9 Testing in Java ....................................................................................................................7 5.2 J2EE .............................................................................................................................................7 5.3 Open Frameworks ........................................................................................................................8 5.4 Le basi Dati ..................................................................................................................................8 5.5 Metodologie e strumenti per la gestione di progetto ...................................................................8 5.6 Altri argomenti trattati .................................................................................................................9 6 Come candidarsi ...............................................................................................................................9 - Ingegneria Informatica - Corso interno di formazione pag. 2/9 1 L’azienda Tinvention è un piccolo e agile studio di ingegneria, fondato da due ingegneri forgiati prima dal Politecnico di Milano e poi da Cefriel (centro di eccellenza della ricerca applicata del Politecnico di Milano). La nostra filosofia è quella di applicare le competenze ingegneristiche al mondo dell ICT restando indipendenti da produttori specifici: liberi di consigliare “il meglio” ai nostri clienti. 2 Obiettivi Scopo del corso è avviare i partecipanti alla professione del progettista e sviluppatore software, con particolare riferimento al linguaggio Java. In particolare gli obiettivi di dettaglio del percorso formativo sono: • Formare i partecipanti sia dal punto di vista teorico che pratico. • Insegnare ai partecipanti i fondamenti del linguaggio Java, nelle sue versioni standard ed enterprise. • Rendere indipendenti i partecipanti nell’attività lavorativa: oltre ad insegnare un insieme di tecnologie specifiche, il corso tratterà temi ad esse correlati, fondamentali per l’attività pratica di sviluppo, quali strumenti di lavoro e metodologie per la gestione di progetto. • Trasmettere un insieme di soft-skill relative, ad esempio, alla gestione della relazione cliente/fornitore, al reperimento delle informazioni sulle tecnologie utilizzate, l’effettuazione delle scelte progettuali, ecc. • Trasmettere la “filosofia aziendale” di Tinvention e creare un gruppo omogeneo dal punto di vista dei valori di fondo, del modo di lavorare e comunicare . 3 Requisiti minimi • Laurea breve in discipline dell’ICT o ad indirizzo matematico-fisico. • Buona conoscenza lettura testi tecnici del settore in Inglese. • Conoscenza di base di almeno un linguaggio di programmazione. 4 Organizzazione Il programma formativo proposto prevede tre momenti nei quali il partecipante verrà progressivamente introdotto all’attività lavorativa. Nelle fasi iniziali si avrà una prevalenza dei contenuti teorici; con l’avanzare del corso saranno progressivamente introdotti dei momenti dedicati alle problematiche - Ingegneria Informatica - Corso interno di formazione pag. 3/9 tipiche dell’attività lavorativa, per arrivare al completo inserimento nei progetti di Tinvention. In particolare il percorso formativo prevede tre fasi principali: • Corso teorico/pratico • Training on the job • Inserimento sui progetti Fasi del programma formativo Corso teorico Inizio Attività Training on the job (stage) Inserimento sui progetti (contratto a progetto) Rinnovi successivi 5 Argomenti del corso teorico In seguito è presentata la lista indicativa degli argomenti che potrebbero essere trattati nel periodo di formazione. Sarà stabilito un calendario personalizzato delle lezioni con gli argomenti reputati adatti al candidato. 5.1 Linguaggio Java Standard 5.1.1 Introduzione a Java Panoramica sul linguaggio Java: introduzione e caratteristiche di Java: motivazioni che hanno portato alla definizione del linguaggio e caratteristiche principali. Costrutti di base: introduzione sui tipi primitivi, visibilità delle variabili, operatori e controlli di flusso Introduzione al jdk e alle relative APIs • Descrizione delle librerie e degli strumenti di base disponibili nel jdk: javac, java, javadoc. • Organizzazione dell'ambiente di lavoro 5.1.2 OO in Java Introduzione alla programmazione oggetti in Java • Il concetto di oggetto: costruttori, metodi e attributi • Composizione, Ereditarietà, Polimorfismo e Interfacce - Ingegneria Informatica - Corso interno di formazione pag. 4/9 5.1.3 Librerie di Utilità: java.util • I tipi di contenitori: Array, Collection, Set, Iterators, ... • Utilizzo di Comparators e Comparble • Uso delle classi: Arrays e Collections 5.1.4 Costrutti avanzati di Java e libreria I/O Strutturazione di una applicazione java in package • Riutilizzo del codice • Utilizzare le classi di un package e definizione di un package • Panoramica sui packages contenuti nel JDK • Specificatori di accesso Il meccanismo delle Eccezioni • Comportamento: Ignorarle o gestirle • Panoramica sulla gerarchia di Eccezioni fornita nel JDK • L'importanza della clausola finally • Come perdere i vantaggi della gestione delle eccezioni programmando male. Input/Output e serializzazione • Caratteristiche del package: le famiglia di Streams e di Reader/Writer • Uso del meccanismo di wrapping • Esempi di catene di Wrappers per IO da file • Utilities e Serializzazione 5.1.5 Multithreading Programmazione multithreding • Definizione e proprieta' un thread • Gestione delle priorita' • I monitor sulle classi statiche e non • Problematiche di sincronizzazione • Linee guida per la Thread Safety • Problemi connessi: starvation e deadlock - Ingegneria Informatica - Corso interno di formazione pag. 5/9 5.1.6 Java Data Base Connectivity Middleware per database • JDBC vs. ODBC • JDBC: Concetti fondamentali • Connessione, Statement e ResultSet • Le eccezioni previste dal package • Operazioni su un database: Query, Update • I Prepared Statement e i Callable Statement • Gestire le transazioni JDBC: Concetti avanzati • I metadati • Il Data Source e il Connection Pooling • Data Access Object (DAO pattern) 5.1.7 Using XML in Java Parsing XML in JAVA • Parsers & Vendors API for XML (JAXP) • SAX, • DOM • JDOM XSLT Processors in JAVA • TrAX 5.1.8 Networking Concetti base • Internetworking • Commutazione di circuito vs Commutazione di pacchetto • Indirizzamento e routing • Protocolli e stack protocollari Java e il package java.net.* - Ingegneria Informatica - Corso interno di formazione pag. 6/9 • Le classi del package java.net.* • Indirizzi IP in Java Connessioni TCP in Java • Client e Server Single Thread • Client e Server Multi Thread Datagrammi UDP in Java • Client e Server UDP • Multicast URL e connessioni HTTP in Java 5.1.9 Testing in Java Il modulo porta l'allievo ad avere una panoramica sul concetto di Testing, in particolare: • Concetti sulla metodologia di sviluppo (TDD, ...) • I test: di unità, per componenti, funzionali, performaces I tools: Junit, Jmock, HttpUnit, Jmeter, Selenium, ... 5.2 J2EE Lo standard delle WebApp Il modulo tratta a diversi livelli di dettaglio tutto lo standard delle weapp (Servlet 2.4 – 2.5). Mostrando come realizzare facilmente applicativi WebBased. Template Egines: JSP Il modulo tratta a diversi livelli di dettaglio lo standard delle JSP (2.0) e l' espression language. Mostrando come realizzare applicativi WebBased, mantenendo separata la logica di business dalla logica di presentazione. Le tag libraries Standard: JSTL Il modulo tratta a diversi livelli di dettaglio lo standard delle JSTL (1.1). Mostrando come velocizzare lo sviluppo di applicativi WebBased. EJB 3.0 Cenni alla tecnologia EJB in particolare a JPA. - Ingegneria Informatica - Corso interno di formazione pag. 7/9 5.3 Open Frameworks ORM frameworks Il modulo fornisce un’introduzione ai framework Open Source: Hibernate e iBatis. Springframework Il modulo fornisce un introduzione al framework Spring nella versione 2.5.x. Web Frameworks Il modulo fornisce un introduzione dei framework Open Source: Apache Jakarta Struts 1.2.x, WebWork e Apache Jakarta Struts 2.0 . Librerie di utilità Il modulo fornisce un introduzione all'uso di alcune librerie molto diffuse tra le quali: Java Mail, Log4J, Apache Commons DBCP , Apache Commons HttpClient, Apache Commons Chain. 5.4 Le basi Dati Il modulo fornisce i concetti fondamentali, e comuni, su cui si basano i moderni database insieme ad alcuni esempio pratici. • Introduzione ai DBMS • Il modello relazionale • SQL standard (DDL, DML, DCL) • Le Transazioni Il modulo prevede anche un introduzione alle particolarità dei più diffusi DBMS, quali ad esempio: Oracle 10g, Mysql, PosgtreSQL e Microsoft SQL Server. 5.5 Metodologie e strumenti per la gestione di progetto Il modulo pone l'accento sull'organizzazione interna del progetto e sui tool di sviluppo che ne automatizzano i vari passaggi (deploy, test, packaging, versioning). • Apache Ant e cenni a Maven • Concetti base di Configuration Management uso e istallazione di base di Subversion. • Eclipse: l’IDE di riferimento - Ingegneria Informatica - Corso interno di formazione pag. 8/9 • Introduzione alla continuous integration • Project management: introduzione e strumenti fondamentali 5.6 Altri argomenti trattati Il corso affronterà anche un insieme di temi correlati alle attività di progettazione e sviluppo software • Linux base: introduzione al sistema operativo Linux. • Rete base: introduzione alle tecnologie e protocolli di rete • Gestione dei requisiti • Introduzione all’ingegneria del software 6 Come candidarsi Le selezioni sono già cominciate, per candidarsi inviare il vostro Curriculum Vitae in allegato ad una email di presentazione a [email protected] . - Ingegneria Informatica - Corso interno di formazione pag. 9/9