Semaine 6
07/05/2001
Objet:        RE: Will MusicXML
become a Schema?
  Date:        Fri, 4 May 2001
11:42:47 -0700
   De:        "Recordare
Information" <info@recordare.com>
     A:       
"Karim Barkati" <barkati@edite-de-paris.com.fr>
Hello Karim,
An SVG converter for MusicXML would be a great thing to do! It will
be an
ambitious undertaking, so good luck with it. If that is your project,
please
keep us posted on your progress.
We are a Windows development shop here (Visual Basic and Visual C++),
so
unfortunately we are not up to date on tools for Java and Linux. Certainly
Xerces (available from Apache or IBM) gets a lot of publicity among
Java-based XML parsers.
Regards,
Michael
-----Original Message-----
From: barkati@ceres.lip6.fr [mailto:barkati@ceres.lip6.fr]On Behalf
Of
Karim Barkati
Sent: Friday, May 04, 2001 6:12 AM
To: Recordare Information
Subject: Re: Will MusicXML become a Schema?
Dear Michael,
thank you for answer. I haven't start to develop my project yet, but
I think
data typing could interest us in schemas. Indeed, our musical applications
should create data structures from the loaded files, even if they are
document-centered. Maybe that's the most important point in schemas
vs DTDs.
But you're right, DTD technologies are more mature, and the application
needs
are the driver.
I would like to develop a SVG converter from MusicXML files in Java,
and I'm
working under Linux. Do you have advices on the tools I could use?
Regards,
Karim Barkati
 
 
Discussion esj:
Le prochain rapport doit adopter une ligne de conduite définitive.
Le problème c'est: comment afficher? et non plus comment décrire.
cad - XML que SVG!
Deux possibilités: relisible par Nabil, ou SVG.
Fond du pb: feuille de style musicale
=> sujet XSL
Il suffit de deux feuilles de style pour démontrer l'impact
du paramétrage typographique, quelle que soit l'application d'affichage.
09/05/2001
 
Sites Java pour XML:
Sun:
http://www.javasoft.com/
 Java Technology & XML:
http://www.javasoft.com/xml/?frontpage-spotlight
                          
XML, the Extensible Markup Language, is the preferred technology in many
information-transfer scenarios
                          
because of its ability to encode information in a way that is easy to read,
process, and generate. JavaTM is
                          
an ideal companion to XML: both languages share a similar historical background
(C++, SGML); both have
                          
goals of simplicity, portability, and flexibility; and both continue to
be developed in groups that involve
                          
industry, development community and academia (W3C, JCP). Not suprisingly
Java is the overwhelmingly
                          
preferred language for server and client-side XML application development.
                          
The Java Software Platform has a comprehensive collection of core APIs
specifically targetted at building
                          
XML-based applications:
                                
Java API for XML Processing (JAXP)
                                
Java API for XML/Java Binding (JAXB)
                                
Long Term JavaBeans Persistence
                                
Java API for XML Messaging (JAXM)
                                
Java API for XML RPC (JAX RPC)
                                
Java API for XML Registry (JAXR)
                          
Java and XML are a natural match for the creation of applications that
exploit the web of information where
                          
different classes of clients, from a traditional phone to the latest smart
refrigerator, consume and generate
                          
information that is exchanged between different servers that run on varied
system platforms. The portability
                          
and extensibility of both XML and Java make them the ideal choice for the
flexibility and wide availability
                          
requirements of this new web.
                          
Sun has a proven leadership role in XML technology and the development
of open standards. To learn more
                          
about Sun's XML standards involvement, or if you are interested in additional
XML technologies (such as
                          
the XSLT Compiler or SVG) available from Sun Microsystems, please visit
http://www.sun.com/xml/.
Cours sur Java de l'ENST:
http://www.inf.enst.fr/~charon/coursJava/
laf Petite Boutique Java & JavaScript.:
http://www.multimania.com/pannetie/
 
Programmation Java:
Grammaire:
pas de variables globales!
type élémentaires par valeurs, objets par adresse
init obligatoire
String pour les constantes, économe en ressources, intouchables
(mais ptr)
StringBuffer modifiable
continue, break, return (sort de la boucle et de la méthode)
ni struct, ni union: class
10/05/2001
 
Programmation Java:
Les objets:
tj passage par @ (par variable) en dépit des apparences
tous les objets sont dynamiques
le système détecte les problèmes de pointeurs
nuls
Programmation objet car les données sont ce qu'il y a de plus
stable dans la vie d'un programme
p79: Une classe est une decription statiques (attributs) d'un ensemble
d'objets (instanciation par new)
p80: Le constructeur est une méthode dont le nom est identique
à celui de la clase et qui effectue les opération que le
programmeur juge nécessaire tout de suite après la création
de l'objet.
Classe =
attributs (par défaut)
méthodes (dans la classe)
constructeur (new, plusieurs en fonction du type du paramètre,
par défaut sans paramètre)
p87: variable static <=> global: le champ est modifié par
tous les objets != attributs d'instances
méthode static ssi elle travaille sur des attributs static
Appel: unObjet.methode(), sinon methode() <=> this.methode(), sinon
méthode de classe: System.exit pas d'objet System juste class static
et méthode static!
Encapsulation: public != private, relations entre classes
Héritage: la fille ressemble beaucoup à la mère,
"extends"
Paquetage: ensemble de classes rattachées à un même
thème, "package"
 
5 Protections:
O: accès possible
N: accès impossible,
R : cas réservé aux sous-classes. Accès possible,
à condition que l'attribut ou la méthode se rapporte à
un objet de la sous-classe, et non pas un objet de la classe Mere.
 
| Accès à partir de : | private | private protected | protected | friendly | public | 
| Mere | O | O | O | O | O | 
| FilleCherie | N | R | O | O | O | 
| Collegue | N | N | O | O | O | 
| FilleIndigne | N | R | R | N | O | 
| Etrangere | N | N | N | N | O | 
Méthode = service rendu
Signature d'une méthode = nom + paramètres + type retourné
Héritage:
Héritage = enrichir (attributs ou méthodes) ou redéfinir
(méthodes)
Tout type fille est automatiquement du type mère
Polymorphisme: objet[i].redessiner fonctionne quelque soit le type
de i, il suffit que les péthodes correspondantes aient été
définies
Surcharge (même classe, paramètres différents)
!= redéfinition (même paramètres, classes parentes;
interdiction par "final")
Attribut "final" = constante car non modifiable dans la classe elle-même.
"static final" = véritable constante, ex: PI
"super": appel du constructeur de Mere à la première
ligne du constructeur de Fille; explicite si les paramètres sont
différents, implicite sinon.
"abstract": méthodes abstraites => classes abstraites: concepts
incomplets qui doivent être complété dans les sous-classes;
appels cohérents grâce au polymorphisme; pas instanciable
(pas new)
"interface": spécification formelle, implicitement "final" devant
tous les attributs et "abstract devant toutes les méthodes. class
Fille implements MereInterface
Pas d'héritage multiple, mais class Fille extends Mere implements
MereSpirituelle
class Object, instanceof
Paquetage: groupement conceptuel ou gestion des niveaux de protection
(protected et friendly), Ada, ensemble de classes, "package awt" en première
ligne de code.
Une seule classe public par fichier, de nom identique, seule classe
utilisable dans les autres sources. Pas private ni private protected. Les
attributs d'une classe public ne sont pas forcément public.
toString -> déboggage
Librairies standards:
java.lang, java.util, java.io, java.net, java.awt
java.lang:
- 
Object (class):
- 
toString(),
- 
clone() partage les attributs de type non simple,
- 
isequal(),
- 
hashcode(),
- 
notify(), notifyAll(), wait(): threads
- 
getClass()
- 
ClassLoader (classe pour chargement autre que classpath)
- 
Boolean, Character, Integer, Long, Float, Double, Number
- 
Math (classe pour sin(), abs(), etc)
- 
System (classe static donc non instanciée)
- 
fonctions bas niveau
- 
recopie tableaux
- 
les trois fichiers i/o
- 
SecurityManager
- 
Runtime
- 
mémoire (gc)
- 
processus (exec())
- 
Processus
- 
Cloneable (interface)
java.util:
- 
BitSet (xor, etc)
- 
Dictionary (ancêtre abstrait de Hashtable), Hashtable, Properties
(String uniquement); redéfinir hashcode() et equals() sauf si String
- 
Observable (classe) prévient Observer
- 
Observer (interface)
- 
Date (classe)
- 
Random (classe)
- 
StringTokenizer (classe) saucissonne une String
- 
Vector (listes), Stack (piles), Enumeration (parcours)
java.io:
- 
File (classe) nom
- 
...Stream Input, Output, Buffer
- 
FileInputStream
- 
RandomAccessFile
java.net:
- 
URL (classe) protocole + serveur+ nomFichier, URLConnection
- 
Socket (communication entre processus distants ou non)
- 
ServerSocket
11/05/2001
 
Sites internet:
Deux cafés, l'addition !  - Mémoire de fin d'études
sur Java, par Jérôme Avrillon et Erik Dasque.
http://www.multimania.com/edasque/cafe_intro.html
"Un objet est une capsule logicielle oblative avec
un tropisme connatif dont l'hétéronomie est la marque
de la durée de l'éphémère et de la hoirie
"
    -- Serge MIRANDA, Professeur d'informatique
                    
Université de Nice..
http://softwaredev.earthweb.com/java
JavaWorld, journal hebdomadaire:
http://www.javaworld.com/
DEVELOPPER EN JAVA
http://perso.wanadoo.fr/isabelle.thieblemont/java/index.html
 
Discussion esj:
print SVG??? pdf ou ps
Batik
déjà Nabil n'imprime pas
Adobe (Illustrator) contre Macromedia (Flash)
svg2pdf?
print + tangible pour le mémoire
 
Programmation Java:
java.awt:
- 
Component
- 
Canvas
- 
Button
- 
CheckBox
- 
Choice
- 
Container
Container: LayoutManager; chaque panel a son LayoutManager:
- 
BorderLayout (nord, sud, est, ouest, centre) par défaut
- 
FlowLayout (de gauche à droite)
- 
GridLayout (tableau fixe)
- 
GridBagLayout (tableau de cases de tailles différentes)
- 
CardLayout (un seul à la fois)
add (Component c)
add (Component c, int i) // ième place
add (String s, Component c)
parenté graphique != parenté de classe
méthode handleEvent de la classe Component
reurn false: traitement par le père graphique
paramètre Event: type + où et quand + objet concerné
(cf instanceof)
handleEvent () appelle mouseEnter(), mouseExit, mouseMove, mouseDown,
mouseDrag, mouseUp, keyDown, keyUp, action, getFocus, lostFocus.
Multithreading:
Le thread rend la main alors qu'il néa pas fini d'être exécuté
=> parallélisme, != de processus car partage ressources et mémoire
Danger: il faut définir run() mais appeler start() (de Thread)!
"implements Runnable" ou "extends Thread" (quand on n'hérite
pas déjà d'une autre classe)
4 états: créé (new), actif (start, resume), endormi
(wait, sleep, suspend), mort (stop)
ex: System.in.read() endormi tant qu'une touche n'est pas enfoncée
Boolean isAlive()
Priorités absolues
Suivant l'implémentation du noyau, les threads de même
priorité sont solidaires ou non => ici Java n'est plus portable!
yield() pour forcer le partage CPU pour les threads de même priorité.
"synchronized" pour le partage des données
synchronized nomFonction ou synchronized (nomObjet) que pour les méthodes
courtes
Rendez-vous: wait() et notify(), notifyAll() (mise à jour d'un
attribut)
Démons: non-nécessité de gérer la fin,
setDaemon, isDaemon
ThreadGroup (comme main), pour stopper tous les threads en même
temps, getMaxPriority(), getDaemon(), getName(), getParent().