Cours d’initiation au Framework Media pour JAVA (JMF)
In tr od u ction à Ja va Med ia Fr a m ewor k et Ja va 1 .2
Présen tation
Java Med ia Fram ework (JMF) est u n e arch itectu re u n ifiée p ou r la syn ch ron isation , le traitem en t, l'affich age d e d on n ées tem p orelles com m e les d on n ées au d io, la vid éo, le form at MIDI, etc. à l'in térieu r d 'ap p lication s in d ép en d an tes ou d 'ap p lets.
u tilise Java 1 .1 et su ivan ts d évelop p é p ar Su n , Silicon Grap h ics et In tel.
con stitu é d e 3 étap es : Player, Cap tu re, Con feren ce.
Java Med ia Player est la p rem ière étap e et com p orte la syn ch ron isation , l'exécu tion , la p résen tation et le stockage d e d on n ées tem p orelles com p ressées.
L'URL d e référen ce est :
elle in d iq u e les sp écification s d e JMF 1 .0 .
Le soft et les exem p les p ou r Solaris et
Win d ows p eu ven t être ch argés à p artir d e
(sou scrire à Java Develop p er Corn er m ais c'est gr atu it)
Java Med ia Player
su p p orte les form ats : p ou r l'au d io: AIFF, AU, DVI, G.7 2 3 , GSM, IMA4 , MIDI, MPEG-1 Layer 1 / 2 , PCM, RMF,
WAV
p ou r la vid éo: Ap p le Grap h ics (SMC), Ap p le
An im ation (RLE) Cin ep ak, H.2 6 1 , H.2 6 3 ,
In d eo 3 .2 , Motion -JPEG, MPEG-1 ,
Un com p ressed
les for m ats d e fich ier s : AVI, Qu ickTim e, Vivo
les p rotocoles File, FTP, HTTP, RTP (RFC
1889/ 1890)
n 'in clu s p as la cap tu re d e d on n ées qu i d oit être la p artie d e Java Med ia Cap tu re. Par con tre on p eu t cap tu rer d es son s à l'aid e Java Sou n d voir à
.html
Java 1.2
en version beta 3 le 25 Mars 1998.
d isp on ib le p ou r Win 3 2 (1 5 Mo), solaris2 sp arc et x86 à p artir d u Java Develop er
Con n ection (s'in scrire et c'est gratu it) à :
La d ocu m en tation est accessib le d irectem en t à :
Java 1.2 (su ite)
Prop ose :
1.Secu rity En h an cem en ts
2 .Swin g (JFC)
3.Java 2D (JFC)
4 .Accessib ility (JFC)
5.Drag an d Drop (JFC)
6 .Collection s
7 .Java Exten sion s Fram ework
8.JavaBean s En h an cem en ts
9.In p u t Meth od Fram ework
1 0 .Package Version Id en tification
En h an cem en ts
12.Serialization En h an cem en ts
13.Referen ce Objects
d io En h an cem en ts
1 5 .Java IDL
16.Perform an ce En h an cem en ts
En h an cem en ts
En h an cem en ts
19.Reflection En h an cem en ts
20.JVMDI: A New Deb u gger In terface
En h an cem en ts
1.Secu rity En h an cem en ts.
À tou t cod e ch argé, la p olitiq u e d e sécu rité locale lu i affecte d es p erm ission s p ou r les r essou r ces (lir e, écr ir e d an s u n fich ier ou rép ertoire, se con n ecter su r u n h ôte d istan t su r l'u n d e ses p orts, ). La p olitiq u e d e sécu r ité locale in d iq u e q u 'elles son t les p er m ission s p ou r d es en tités sign atair es.
Au d io En h an cem en ts
su p p ort p ou r l'au d io d an s les ap p lication s com m e d an s les ap p lets. p erm et d 'u tiliser les form ats au d io : MIDI (typ e 0 et typ e 1 ), RMF, WAV, AIFF, an d AU
in tègre l'API Java Sou n d q u i con tin u e à se d évelop p er. voir à
Swin g (JFC)
JFC = Java Fou n d ation Classes = en sem ble d e services et d e com p osan ts grap h iq u es en Java : cf. 2 , 3 , 4 , 5 ci d essu s. cf. FAQ à
tml
l'en sem ble d es com p osan ts grap h iqu es est Swin g. Ces com p osan ts on t le"look an d feel" d e la p lateform e qu i exécu te le cod e Java.
Swin g est u n sou s en sem ble d u p rojet JFC.
Swin g = les com p osan ts grap h iqu es d e JFC.
JFC éten d les fon ction n alités d e AWT (com p osan ts légers, ).
IFC d e n etscap e (au ssi 100% p u re Java) von t m igrer vers JFC (accord Su n -n etscap e).
Java 2D (JFC)
ajou te d e n ou velles fon ction n alités grap h iqu es (m an ip u lation d e la cou leu r, tran sform ation s géom étriqu es, ) à p ou r les d essin s, le texte, les im ages, etc. p ou r les ap p lication s com m e p ou r les ap p lets. com p lètem en t com p atible avec Java 1.1.
u tilise la cla sse Graphics2D p ou r in d iq u er :
- l'ép a isseu r d es lign es
- le typ e d e join tu re en tre lign es
- le rem p lissage p ar cou leu r ou textu re
- l'a n t i-a lia sin g
-
En Java 1.1 on écrit :
public void paint(Graphics g) { g.setColor();
g.fillRect(300, 300, 200, 100);
}
qu i d essin e u n rectan gle rou ge.
Graphics2D
En Java 1 .2 , on p eu t p réciser le style d e la cou leu r d e rem p lissage, d éfin ir d es p olygon es com p lexes, etc. grâce à u n objet d e classe .Graphics2D (sou s classe d e .Graphics) par un ch an gem en t d e typ e :
public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setColor();
GeneralPath path = new
GeneralPath(GeneralPath.EVEN_ODD);
path.moveTo(300.0f, 400.0f); // coin bas gauche path.lineTo(500.0f, 400.0f); // ligne vers la droite path.lineTo(500.0f, 300.0f); // ligne vers le haut path.lineTo(300.0f, 300.0f); // ligne vers la gauche path.closePath(); // on referme le trace
(path); // on remplit en rouge.
}
on d essin e en fait u n ch em in (objet d e la cla sse GeneralPath) et ap rès l'avoir referm é, on le rem p lit. Le m od e d e rem p lissage est in d iq u é d an s le con stru cteu r d u ch em in .
On p eu t évid em m en t d essin er d es rectan gles qu i son t m ain ten an t d es ob jets d e classe qu i im p lém en ten t l'in terface Shape.
m an ip u lation s avan cées
tran sform ation s affin es (tran slation , rotation ), tran sp aren ce :
public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g;
g2d.setColor();
GeneralPath path = new
GeneralPath(GeneralPath.EVEN_ODD);
path.moveTo(0.0f, 0.0f); // lower left corner path.lineTo(200.0f, 0.0f); // lower right corner path.lineTo(200.0f, -100.0f); // upper right corner path.lineTo(0.0f, -100.0f); // upper left corner path.closePath(); // close the rectangle AffineTransform at = new AffineTransform(); at.setToTranslation(300.0, 400.0);
g2d.transform(at); (path);
// second rectangle
g2d.setColor(); // il sera bleu
// positionne la composante alpha de transparence a
// 50% de transparence
AlphaComposite comp =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
0.5f); g2d.setComposite(comp);
// rotation de -PI/4 radians (i.e. -45°).
// L'orientation est celle des aiguilles d'une montre !!
at.setToRotation()); g2d.transform(at);
// affichage du rectangle bleu
(path);
}
Le texte
Le texte est traité com m e u n d essin . Par exem p le p ou r d essin er la lettre J en p olice Helvetica grasse ob liqu e, ap rès u n e rotation d e 4 5 ° "à gau ch e" su r les rectan gles p récéd en t, il su ffit d 'ajou ter :
// construire l'objet police Helvetica-BoldOblique de 200 points
Font myFont = new Font("Helvetica-BoldOblique",
Font.PLAIN, 200);
// afficher le caractere `J' en vert, opaque
// apres rotation de 45°
// a gauche en utilisant le gc precedent.
g2d.setColor(Color.green);
g2d.setComposite(AlphaComposite.getInstance(AlphaCompo site.SRC_OVER, 1.0f)); g2d.drawString("J", 0f, 20f);
Les im ages
De m êm e q u e p ou r les d essin s et les figu res, on p eu t ap p liqu er d es tran sform ation s affin es su r d es im ages et écrire :
Image image = applet.getImage(url); AffineTransform at = new AffineTransform();
at.rotate(); g2d.drawImage(image, at, this);
Les p ixels d es im ages p eu ven t avoir u n e valeu r d e tran sp aren ce d istin cts 2 à 2 com m e :
Bibliograp h ie
Java 1.2 :
p ou r Java 2D :
Ja v a , le s a n im a tio n s e t le m u ltim é d ia
On trou ve su r In tern et certain s sites p rop osan t d es p rogram m es Java (sou ven t d es ap p lets) qu i in tègren t, le m ou vem en t, le ch an gem en t d 'im ages, p arfois les son s, etc. Malh eu reu sem en t très sou ven t ces p ages dem an de beaucoup de tem ps de ch argem en t.
p rop ose d es objets 3D (avion , h élicop tère, d irigeab le, etc. ) à m an ip u ler avec la sou ris. p rop ose d es effets d 'om b res, d es vu es fils d e fer, etc.
u n catalogu e rem is à jou r qu otid ien n em en t d es m eilleu res ap p lets d 'an im ation et m u ltim éd ia.
html le célèb r e jeu "casse b ou teille" sp atial.
Bibliograp h ie
Ja v a , le s a n im a tio n s e t le m u ltim é d ia ( s u ite )
u n bon gag : u n bou ton p ou ssoir qu i fu it q u an d on essaie d e cliq u er d essu s (m ais p arfois on y arrive !). le cu be d e Ru bik en Java : m agn ifiqu e ! p lu s gén éralem en t le site d e Karl Hörn ell à est très b eau avec d e m agn ifiqu e ap p lets à en tre au tre u n éd iteu r d e p artition et exécu teu r d e m élod ies à :
