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:
java.util:
java.io:
java.net:

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:

Container: LayoutManager; chaque panel a son LayoutManager: 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().