31
1 Introduction à Java dernière modification 27/11/2017 Philippe Genoud [email protected] http://membres-liglab.imag.fr/genoud/ENSJAVA/M2CCI/ © Ph. Genoud – Université Grenoble Alpes

Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

1

Introduction à Javadernière modification 27/11/2017

Philippe [email protected]

http://membres-liglab.imag.fr/genoud/ENSJAVA/M2CCI/

© Ph. Genoud – Université Grenoble Alpes

Page 2: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 2

JAVA c'est quoi ?

• Une technologie développée par SUN Microsystems™ lancée en

1995 - rachetée par Oracle en 2009

– Un langage de programmation

– Une plateforme, environnement logiciel dans lequel les programmes java

s'exécutent.

• Présente dans de très nombreux domaines d’application : des

serveurs d’applications aux téléphone portables et cartes à puces

© Ph. Genoud – Université Grenoble Alpes

www.tiobe.com

TIOBE indexnov. 2016

The Top Programming LanguagesIEEE Spectrum’s 2016 Ranking

Page 3: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 3

Le Langage Java

• Dans un des premiers papiers* sur le langage JAVA,

SUN le décrit comme suit :

« Java : a simple, object-oriented, distributed,

robust, secure, architecture neutral, portable,

high-performance, multithreaded, and dynamic language »

* White Paper :The Java Language Environment - James Gosling, Henry McGilton - May 1996

http://java.sun.com/docs/white/langenv/

© Ph. Genoud – Université Grenoble Alpes

Page 4: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 4

Le Langage JavaMon premier programme Java (pas très objet…)

public class HelloWorld {

}

HelloWorld.java

1 Tout code java doit être défini à l'intérieur d'une classe

2 La description de la

classe est effectuée à

l'intérieur d'un bloc

{ }

public static void main(String[] args) {

}

int i = 0;

while (i < 5) {

System.out.println("Hello World !");

i++;

}

Le point d'entrée pour

l'exécution est la méthode main()

4

Le code de la classe doit être

enregistré dans un fichier de

même nom (casse comprise) que la classe

Compilation : javac HelloWorld.java

HelloWorld.java HelloWorld.class

javac java

Exécution : java HelloWorld Hello World !

Hello World !

Hello World !

Hello World !

Hello World !

3

© Ph. Genoud – Université Grenoble Alpes

Page 5: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 5

Le langage JavaUn langage compilé / interprété

• Compilation d'un programme JAVA : génération de byte-code

javac

Test.class

byte-code

0 iconst_0

1 istore_1

2 goto 30

5 getstatic #10 <Field java.io.PrintStream out>

8 new #5 <Class java.lang.StringBuffer>

11 dup

12 ldc #1 <String "Hello ">

….

27 iinc 1 1

30 iload_1

31 bipush 10

33 if_icmplt 5

36 return

Test.java

code source

public class Test {

public static void main(String[] args)

{

for (int i = 0; i < 10; i++)

System.out.println("Hello " + i);

}

}

• Le byte-code est :

– proche d'un langage machine

– indépendant de la plateforme d'exécution (matériel + OS)

01100001

11100000

11111010

11101...

...javap –c Test

Désassemble Test.class

© Ph. Genoud – Université Grenoble Alpes

Page 6: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 6

La machine virtuelle JavaExécution d'un programme Java compilé

• byte-code assure la portabilité des programmes Java

– langage d'une Machine Virtuelle

– à l'exécution un interpréteur simule cette machine virtuelle

.javasource

.classbyte-code

javac PC

Windows

java Java

VM

Java

VMMacOS X

Java

VMSolaris

Linux

© Ph. Genoud – Université Grenoble Alpes

Page 7: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 7

La machine virtuelle javaPrincipes de fonctionnement

• Chargement

– chargement sélectif et dynamique des classes

– vérification statique du code (tentatives de modification de la machine

virtuelle, ...)

• Protection lors de l'exécution

– Le "security manager" possède un droit de veto (accès "sauvages" au

système de fichiers, ...)

– Cette protection peut-être modulée

Interpreter

Security ManagerClass Loader

Byte-Code verifier

Classes

locales

.class

Réseau

ou

Système

de fichiers

JVM

© Ph. Genoud – Université Grenoble Alpes

Page 8: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

La machine virtuelle javaUtilisation pour d'autres langages

• JVM utilisée pour exécuter

des programmes dans des

langages autres que Java

Novembre 2017 © Ph. Genoud – Université Grenoble Alpes 8

http://en.wikipedia.org/wiki/File:Java_virtual_machine_architecture.svg

Page 9: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 9

Performances

• Exécution d'un programme Java

– le code Java est compact,

– le chargement des classes nécessaires est sélectif et dynamique,

– ... mais Java est interprété

• Palier aux lenteurs de l'interprétation

– utilisation d’un JIT (compilateur « Just-in-Time »)

• compilation à la volée du byte-code

• réutilisation du code déjà compilé

• intégration du JIT HotSpot dans JVM depuis version 1.3

– Performance of Java versus C++ J.P.Lewis and Ulrich Neumann

(http://www.idiom.com/%7Ezilla/Computer/javaCbenchmark.html)

© Ph. Genoud – Université Grenoble Alpes

Page 10: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 10

Types de programmes Java

Seuls diffèrent les contextes d'invocation et d’exécution

– Les droits des applets et des applications ne sont pas les mêmes

• Les Applications indépendantes

– Programmes autonomes (stand-alone)

• Les Applets

– Programmes exécutées dans l’environnement d’un

navigateur Web et chargés au travers de pages HTML

Demo

Demo

© Ph. Genoud – Université Grenoble Alpes

http://lig-membres.imag.fr/genoud/ENSJAVA/cours/TicTacToe/example1.html

Page 11: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 11

Types de programmes JavaApplication indépendante

AppliVisage.java Dessin.javaVisageRond.java

La classe "principale" Dessine un visage Gère une liste de visages

AppliVisage.class Dessin.classVisageRond.class

javac AppliVisage.java

java AppliVisage

Application est définie par

un ensemble de classes

dont une jouera le rôle de

classe principale

La compilation de la

classe principale entraîne

la compilation de toutes

les classes utilisées

Pour exécuter l'application

on indique à l'interpréteur

java le nom de la classe

principale

javac ≃ make

java charge les classes nécessaires au

fur et à mesure de l'exécution

© Ph. Genoud – Université Grenoble Alpes

Page 12: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 12

Types de programmes JavaApplication indépendante

• Application doit posséder une classe principale

– classe possédant une méthode de signature

public static void main(String[] args)

• Cette méthode sert de point d’entrée pour l’exécution

– l’exécution de l ’application démarre par l’interprétation de cette

méthode

ex : java AppliVisage1

Exécute le code défini dans la méthode main contenue dans le fichier

AppliVisage1.class

Tableau de chaînes de caractères (équivalent à argc, argv du C)

© Ph. Genoud – Université Grenoble Alpes

Page 13: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 13

Types de programmes JavaApplet

• Classe principale ne posséde pas de méthode main()

• Hérite de java.awt.Applet ou javax.swing.JApplet

• Son bytecode réside sur un serveur http

• Elle est véhiculée vers un client http (navigateur Web) via une

page html qui contient son url

• Lorsqu’un navigateur compatible Java (avec sa propre machine

virtuelle java (JVM)) reçoit cette page HTML, il télécharge le code

de la classe et l’exécute sur le poste client

– l’applet doit posséder un certain nombre de méthodes pour permettre cette

exécution

• init(), start(), stop(), paint(), destroy()

© Ph. Genoud – Université Grenoble Alpes

Page 14: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 14

Types de programmes JavaApplet : Principe de fonctionnement

.class

Serveur

httpClient

http

Navigateur

intégrant une

machine

virtuelle Java

5. Exécution de

l’applet dans

la JVM du client

HTML

HTML HTML

3. Demande de chargement

de l’applet référencée dans la page

HTML

HTML

HTML

HTML

.class.class

.class

http://java.sun.com/jdk1.3/demo/applets/Clock/example1.html

1. Demande de chargement d ’une

page web contenant une applet

example1.html

2. Chargement de la page html

<HTML>

<HEAD>

<TITLE>A Clock (1.1)</TITLE>

</HEAD>

<BODY>

<h1>A Clock (1.1)</h1>

<hr>

<applet code="Clock2.class"

width=170 height=150>

<param bgcolor="C0C0C0">

</applet>

....

</BODY>

4. Chargement du bytecode des

classes de l’applet

Clock2.class

.class

HTML

© Ph. Genoud – Université Grenoble Alpes

Page 15: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 15

La plateforme Java

• Plateforme

– Environnement matériel et/ou logiciel dans lequel un programme s'exécute.

• La plus part des plateformes sont la combinaison d'un OS et du matériel sous-

jacent (MS Windows + Intel, Linux + Intel, Solaris + Sparc,

Mac Os X + Power PC)

• La plateforme Java est entièrement logicielle et s'exécute au

dessus des plateformes matérielles

Plateforme matérielle

(OS + hardware)

JVM (Machine virtuelle)

API Java

MonProgramme.class

Plateforme

Java

API (Application Programming Interface) Java :

Bibliothèques Java standards sur lesquelles le

programmeur peut s'appuyer pour écrire son code

© Ph. Genoud – Université Grenoble Alpes

Page 16: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 16

La plateforme JavaAPI Java

• API Java

– (très) vaste collection de composants logiciels (classes et interfaces)

– organisée en bibliothèques (packages)

– offre de nombreux services de manière standard (indépendamment de la

plateforme matérielle)

Plateforme matérielle

(OS + hardware)

JVM (Machine virtuelle)

API Java

MonProgramme.class

Plateforme

Java

Programmer en Java nécessite une bonne connaissance de l'API.Attention à la courbe d'apprentissage (learning curve) qui est peut être longue

© Ph. Genoud – Université Grenoble Alpes

Page 17: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 17

Mobile Edition

JME

Mobile Edition

JME

Entreprise Edition

JEE

Entreprise Edition

JEE

Standard Edition

JSE

Standard Edition

JSE

La plateforme JavaLes différentes éditions de Java

Environnement d’exécution optimisé pour les dispositifs

« légers » :

• Carte à puce (smart cards)

• Téléphones mobiles

• Assistants personnels (PDA)

Destinée au développement d’applications « d’entreprise »

(«business applications») robustes et interopérables.

Simplifier le développement et le déploiement

d’applications distribuées et articulées autours du web.

Fourni les compilateurs, outils, runtimes, et APIs pour

écrire, déployer, et exécuter des applets et applications

dans la langage de programmation Java

• 3 éditions de Java

Versions MS Windows, Linux, Solaris téléchargeables gratuitement sur java.sun.com

© Ph. Genoud – Université Grenoble Alpes

Page 18: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

0

500

1000

1500

2000

2500

3000

3500

4000

4500

java 1.0 java 1.1 java 1.2 java 1.4 java 1.5 java 1.6 java 1.7 java 8

212

504

1520

2757

3279

3799

4024 4240

8 23 59 135 166 203 209 217

classes

packages

Novembre 2017 18

La plateforme JavaEvolution de l'API JSE

Java 2 (J2SE) - 1998Ajout de nombreuses fonctionnalités

• Swings, Collections, JNDA ….

Java 1.1 – 1997•Modification du langage : classes internes• Modification du modèle événementiel pour awtJava Beans• Amélioration des performances de la VM

J2SE 1.4 – 2002•Amélioration des performances• Assertions, Nouveau package pour i/o,• Nouvelles classes pour collections…• Nombreux nouveaux packages : XML, log des applications,

préférences utilisateur …

Java 5 (Tiger) - 2004• Evolutions du langage : Généricité,

Types Enumérés, Autoboxing, …• Nouvelles API : Concurrence, Management

(gestion et supervision de la JVM)…

Java 6 (Mustang) - 2006• Services Web• Langages de scripts• Accès au compilateur• Plus d’API pour applis desktop• ….

Java 7 – 2011• améliorations du langage : switch avec des chaînes, gestion des exceptions, • amélioration des API• utilitaires pour la concurrence.

Java 8 – 2014• améliorations du langage : lambda expressions (programmation fonctionnelle), collections, streams …

© Ph. Genoud – Université Grenoble Alpes

Page 19: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

La plateforme JavaEvolution de l'API JSE

Novembre 2017 © Ph. Genoud – Université Grenoble Alpes 19

Java 9 – Sept. 2017

modularisation (Jigsaw)

structuration du jdk en modules afin de pouvoir charger seulement les modules nécessaires plateforme plus facilement évolutive et maintenable ; des gains de performance et d'exécution : seuls les modules nécessaires sont chargés ; sécurité : principe modulaire permet de fournir le juste assez nécessaire au système.

6400 classes

315 packages

(78 modules)

• API gestions des processus• Multi-release des fichiers JAR• Meilleure gestion du

deprecated• Fabriques pour les collections• Moteur de rendu Marlin

(Java2D, Java FX)• Un shell Java : REPL jShell

• Lit une expression (le R pour Read) ;

• Évalue une expression (le E pour Evaluate) ;

• Imprime sur la sortie standard (le P pour Print) ;

• Recommence (le L pour Loop)

Page 20: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 20

JSE : Java Standard EditionOrganisation générale

© Ph. Genoud – Université Grenoble Alpes

Page 21: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 21

JSE : Java Standard EditionOrganisation générale

JRE

JRE (Java Runtime Environnement) pour l'exécution de code java compilé

© Ph. Genoud – Université Grenoble Alpes

Page 22: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 22

JSE : Java Standard EditionOrganisation générale

JDK

JDK (Java Developper's Kit) outils de base pour le développement d'applications Java

© Ph. Genoud – Université Grenoble Alpes

Page 23: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 23

JEE Java Entreprise Edition

• Plateforme définie par SUN pour le développement

d’applications réparties

– basée sur un ensemble de technologies Java

• Servlets, JSP(Java Server Pages), JSF (Java Server Faces) : pages

web dynamiques

• EJB (Entreprise Java Beans) : objets métiers

• JDBC : API d'accès à des SGBD

• JNDI (Java Naming an Directory Interface) : API pour nommage des

objets

• JTA (Java Transaction API) ; API pour gestion des transactions

• JAAS (Java Authentication and Authorization Service)

• Et de nombreuses autres…

– S'appuie sur un modèle d'architecture multi-tiers (multi-couches)

© Ph. Genoud – Université Grenoble Alpes

Page 24: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 24

Architecture des applications JEE

• Architecture multi-tiers

Poste client

Serveur JEE

Serveur

de bases

de données

Tier client

Tier web

Tier métier

Tier Système

d'Information de

l'Entreprise

Serveur d'applications JEE

Client léger

(navigateur web)

Client riche

(application Java)présentation

métier

données

EJB EJB

Pages JSPServlets

EJB EJBEJB

Pages JSP

• Logique de l'application :

– Composants web (Servlet, JSP,JFS)

– Composants métiers (EJB)

• Services standards (cycle de vie des composants, multithreading, transactions,

persistance…) pris en charge par les conteneurs Web et EJB du serveur d'application JEE

Conteneur EJB

Conteneur WEB

© Ph. Genoud – Université Grenoble Alpes

Page 25: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 25

JEE situation actuelle

• Une spécification (Sun puis Oracle) : – JEE 5 (2006), JEE 6 (2009), JEE 7 (2013)

• Différentes implémentation de la plateforme

– Des implémentations commerciales

• WebLogics server (Oracle),WebSphere (IBM), …

• Sun Java System Application Server, Oracle Application Server…

– Ou open-source

• GlassFish, JBoss, Geronimo (Apache), JOnAS…

• Processus de certification

– TCK (Test Compatibility Kit) (~ 20000 tests)

– Payant sauf pour plateformes open-source

© Ph. Genoud – Université Grenoble Alpes

Page 26: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 26

Environnements de développement intégrés

• Nombreux IDE (Integrated Development Environment) pour java

– Editeur syntaxique, débogueur, compilateur, exécution

Visual J++Microsoft

WebSphere Studio

Site Developer for JavaIBM

Emacs + JDEhttp://sunsite.auc.dk/jde

NetBeanswww.netbeans.org

Eclipsewww.eclipse.org

BlueJwww.bluej.org

JBuilderCodegear

...

IntelliJIDEAJetBrains

JDeveloperOracle

C# .netJCreator

Xinox

• Commerciaux

• Open-source et/ou freeware

© Ph. Genoud – Université Grenoble Alpes

Page 27: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 27

Java aujourd'hui

• Une maturité certaine

– Technologie largement reconnue dans le monde industriel

• Evolutions de JAVA contrôlées par organisation indépendante

Java Community Process (www.jcp.org)

– Évolutions du langage (généricité dans version 1.5(Tiger))

– Nouvelles API

• Passage de Java dans la communauté open source (2007)

OpenJDK

– Jusqu'alors JAVA était une marque propriétaire de SUN

• Bataille avec C# .NET sur la plateforme Windows

• Rachat de SUN par Oracle (avril 2009)

© Ph. Genoud – Université Grenoble Alpes

Page 28: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 28

1ère séance de TP

• utilisation depuis ligne de commande des outils de base pour le

développement d'applications Java

– Compilation :

• javac

– Exécution :

• java (applications)

• appletviewer (applets)

– Documentation

• javadoc

– "Archivage"

• jar

• Pourquoi ne pas utiliser tout de suite un IDE Java ?

– Être capable de travailler avec Java quelque soit l'environnement

– Comprendre des mécanismes parfois masqués par des environnements

intégrés (ex. CLASSPATH)

© Ph. Genoud – Université Grenoble Alpes

Page 29: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 29

2ème séance de TP

• Objectif : expérimenter les constructions de base du langage Java

(types simples, instructions de contrôle, itérations) qui sont très proches

syntaxiquement de celles utilisées par le langage C

• Ecriture de programmes simples

– Thème 1 : expressions

– Thème 2 : instructions conditionnelles

– Thème 3 : itérations

– Thème 4 : instanciation d'objets - envois de messages

© Ph. Genoud – Université Grenoble Alpes

http://lig-membres.imag.fr/genoud/ENSJAVA/M2CCI/cours/

http://lig-membres.imag.fr/genoud/ENSJAVA/tds/sujets/TypesSimples/index.html

Page 30: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 30

Références

« Java 7: les fondamentaux du langage Java»

Thierry Groussard, Editions ENI, 2011

« Au coeur de Java 2 - Volume 1 : Notions fondamentales »Cay S. Horstmann, Gary Cornell, – 8ème édition, Pearson education, avril 2008

« Programmer en Java »,

Claude Delannoy, 9ème édition, Editions Eyrolles, juin 2014

« Java - tête la première »

Kathy Sierra, Bert Bates, 2ème édition, O’Reilly, septembre 2005

© Ph. Genoud – Université Grenoble Alpes

et beaucoup d'autres …

Page 31: Introduction à Javalig-membres.imag.fr/.../cours/supportsPDF/IntroCourte.pdfApplet • Classe principale ne posséde pas de méthode main() • Hérite de java.awt.Appletou javax.swing.JApplet

Novembre 2017 31

Références (suite)

URLs• https://www.oracle.com/java/index.html

Site officiel Java d'ORACLE

– Téléchargement, Tutoriels, Documentations, spécifications, …

– http://docs.oracle.com/javase/tutorial/index.html

– http://www.oracle.com/technetwork/java/index.html

• http://java.developpez.com/

des tutoriels, des FAQ, des ressources….

• http://www.javapractices.com/

nombreux exemples de code

• http://www.javaworld.com

Magazine électronique, l'actualité de java

• …

© Ph. Genoud – Université Grenoble Alpes