french english

RSS 1.0 
 
 Login 
 Password 
 Créer un compte 
 
28-02-09 / 17:14 : OpenJDK 1.7 sur OSX (cjed)
Le site Infernus.org propose un pas à pas pour compiler la version 1.7 de l'OpenJDK (pour BSD) sur OSX. Les APIs graphiques utilisent alors cependant X11 (pas de bridge Aqua comme le permet la VM d'Apple, sans compter les nombreuses autres optimisations d'Apple).
 Commenter
27-02-09 / 00:46 : Cappuccino Atlas : points d'extension ? partie MDA (cjed)
Alors que la date de sortie de l'éditeur Atlas n'est pas précisée (on espère une version beta pour bientôt), et qu'il est supposé gratuit, on se demande si le code source sera accessible (LGPL ?) et si un mécanisme d'extension sera proposé, à la manière des points d'extension d'Eclipse. On pourrait ainsi accéder aux objets UI directement (sans avoir à charger l'archive CIB générée), et réaliser ainsi plus simplement la partie MDA complémentaire (intégrée à l'éditeur) : définition des objets métier, des services distants, des interactions (lien avec les événements sources - actions des vues - via enrichissement dynamique des handlers des delegate).
On aurait ainsi un éditeur d'application cliente complète.

MAJ : l'équipe de Cappuccino a précisé qu'Atlas ne serait pas open source (du moins son code, mais nous attendons de savoir si il sera bien gratuit, ou proposé gratuitement en version Lite, et avec des fonctionnalités/plugins supplémentaires en version payante). Un mécanisme d'extension par plugins sera bien proposé, et sera acessible gratuitement. Cela ouvre donc bien un marché comme Eclipse l'a fait : plugins open source et/ou gratuits, puis versions commerciales plus évoluées. En effet même si Atlas est axé à l'origine sue la couche présentation de l'application cliente, une extension (plugin) MDA pourrait couvrir le reste, et un plugin de saisie de code alla Bespin pourrait permettre d'ajouter/retoucher certaines parties (sans même générer des fichiers puisque les classes peuvent être créées ou enrichies au runtime).
 Commenter
25-02-09 / 00:26 : Cappuccino Atlas : Interface Builder dans browser (cjed)
Comme je l'avais supposé, l'équipe de 280 North a présenté un éditeur alla Interface Builder (nommé Atlas), fonctionnant directement sur le navigateur (application Cappuccino). On peut voir un webcast ici.
Comme IB, Atlas s'occupe principalement de la couche UI (et bindings), générant au final une archive CIB.
Une idée complémentaire, un éditeur MDA écrit en Cappuccino, m'était venue il y a un peu plus de 10 jours, en tombant sur un article au sujet des APIs runtime objj_allocateClassPair, etc. Il s'agissait de générer en plus le code applicatif depuis le modèle (code appelant par exemple des services distants via CP2JavaWS), en ajoutant dynamiquement au runtime Objective-J les classes constituant l'application (tout cela via un bouton de test depuis l'éditeur MDA réalisé en Cappuccino). J'avais pris des notes pour déjà définir une fonction javascript générique (encapsulant la récupération du proxy CP2JavaWS sur le endpoint et passant les paramètres d'appel), référençable sous forme de method_imp pour un objet Method créé dynamiquement (ajouté à la method_list de la classe créée dynamiquement) - un objet Method pour chaque action définie sur le modèle.

En tous les cas Atlas est ce qu'il manquait pour les démos (IB n'étant pas disponible sous Windows), et l'outil nib2cib cassait quelque peu encore le cycle de développement. Un article est déjà disponible sur Ajaxian. L'outil y est annoncé pour cet été (fin du printemps on l'espère).
De plus Atlas peut générer des interfaces au look adapté aux différents systèmes, et peut même utiliser des APIs natives sur iPhone. Un nouveau thème est également fourni (en open source), Aristo, développé avec la société de design Sofa.

On se demande bien comment Google et Adobe vont pouvoir suivre.
 Commenter
24-02-09 / 23:16 : Safari 4 : beta publique (cjed)
Apple propose la première beta publique de Safari 4, ici. Elle apporte un nouveau moteur javascript, Nitro, qui est annoncé comme 4.2 fois plus rapide que le moteur de Safari 3 (et presque deux fois plus rapide que le futur Firefox 3.1), et également le support de HTLM 5 (audio and video media tags, database storage), CSS Animation, CSS Effects, CSS Canvas et CSS3 Web Fonts.
Un nouveau mode, Top Sites, affiche les sites les plus visités avec un effet de type grille de chaînes TV, qui rappelle les démonstrations Core Animation. Pour la parcours des pages de l'historique (ou des favoris), un mode type Coverflow est proposé. Ces effets exigent une carte supportant Quartz Extreme (Radeon AGP 16 Mo de VRAM ou GeForce 2MX sous Leopard). Le zoom global est également inclus (l'était dans les nigthly build de WebKit). Comme dans Chrome les onglets peuvent à présent être placés dans la partie supérieure de la fenêtre pour gagner de la surface d'affichage en hauteur. Enfin Safari obtient 100/100 dans le test Acid3. C'est ici pour tous les détails.
La dernière mises à jour de sécurité est requise.
 Commenter
21-02-09 / 23:49 : Cappuccino/annonces : idées/éditeur MDA (cjed)
Les membres de Cappuccino ont indiqué qu'ils participeront au FOWA Miami (23-24 février) next week and going to be making a pretty big announcement in the process, so stay tuned ;).
As you've probably noticed, development on the main branch has not been that active in the last couple of weeks because we've been busy preparing for this thing.


Des fonctionnalités importantes ont déjà été annoncées récemment pour la prochaine version de Cappuccino : nouveau moteur de rendu de texte (incluant ombres), modes d'affichage, thèmes. Quelle annonce plus importante peut-on donc attendre ? :

- Apple adoptant Cappuccino pour ses prochaines applications RDA (MobileMe, etc.) ?

- Un outil de generation alla GWT pour Cappuccino (mais serait en conflit avec l'approche dynamique de CP2JavaWS) ?

- Un serveur réalisé en Objective-C (avec gestion de sessions et pool de connexions aux bases de données) ? Les membres de Cappuccino sont intéressés par une conversion Objective-J/JSON basée sur CPCoding dans CP2JavaWS, afin de permettre l'utilisation d'un serveur en Objective-C.

- un nouvel éditeur graphique (alla Interface Builder) réalisé en Cappuccino, fonctionnant donc directement dans le navigateur, et permettant de tester les applications Cappuccino en générant dynamiquement le code (ajout de classes au runtime Objective-J grâce à objj_allocateClassPair, etc.) ? Cela permettrait également une approche MDA directement dans le navigateur (définition graphique des objets métiers et services, des interactions). Il s'agit de ma seconde idée de projet après CP2JavaWS, et le code généré/ajouté dynamiquement pourrait se baser sur CP2JavaWS pour l'appel de services distants.
On peut également à présent éditer du code Objective-J directement depuis le navigateur, grâce à l'éditeur Bespin (basé sur Canvas). On pourrait déclencher le lancement de la CPApplication à tester via un event observer approprié de l'éditeur.
 Commenter
21-02-09 / 17:10 : Web 3.0/MVC client/serveur non J2EE (cjed)
Après GWT, Cappuccino ouvre la voie au web 3.0. Les bibliothèques de taglibs JSPs (RIA web 2.0) sont dépassées (JSF RichFaces, ADF, etc.), la version 2.0 de JSF annoncée récemment n'étant qu'une (légère) évolution. Les applications RDA (RWA si le container est un navigateur) accèdent donc directement à la couche services (applicatifs et/ou métiers, selon les besoins de workflow et de gestion transactionnelle) du serveur, la couche présentation (MVC) étant déportée sur le client (MVC de l'AppKit de Next/Cocoa pour Cappuccino). Les appels se font au travers d'un bridge, un objet proxy, qui est soit généré spécifiquement pour un service (cas de GWT), soit générique et dynamique - cas de CP2JavaWS (utilise la méthode forwardInvocation du runtime Objective-J, en l'absence pour le moment d'un équivalent de la classe NSProxy. Ces mécanismes sont bien plus puissants que les dynamic proxies de Java, limités et lourds à mettre en oeuvre). Côté serveur plus aucune servlet n'est nécessaire, l'interception peut se faire au moyen d'un simple filtre de servlet (sur le lequel on peut également préciser le mapping d'url), solution utilisée pour la partie serveur de CP2JavaWS.

L'intérêt est qu'on n'impose ainsi plus d'adhérence (critique de Struts pour lequel on devait dériver d'une super-classe, ActionServlet). Ainsi les filtres peuvent être comparés aux interfaces. On peut alors si besoin déclarer des servlets pour des technologies classiques (Struts, Spring MVC), et y associer le filtre de CP2JavaWS par exemple. Ce dernier repère si une requête ne lui est pas destinée, et délègue alors le traitement au reste de la chaîne (filtres suivants, puis servlet MVC classique). On dispose alors d'une application unique pouvant être appelée depuis des clients classiques (interfaces issues du rendu de taglibs côté serveur) et également depuis des applications RDA (basées sur du dom/javascript comme Cappuccino). Cette solution peut aussi faciliter les opérations de migration et/ou de maintenance.

Le choix d'un serveur J2EE réside alors beaucoup moins dans son container de servlet/jsp (plus de jsp) que dans ses divers connecteurs (JDBC, JCA, files de messages asynchrones). Reste la gestion des sessions, mais cela aussi pourrait être implémenté dans une autre technologie (partie serveur en Objective-C par exemple, sujet déjà évoqué par les membres de Cappuccino).

Quant au format des échanges, JSON semble le mieux placé (répandu et simple), bien qu'il ne propose pas la gestion de namespaces ni des cycles (doivent être gérés par des champs propriétaires/non standards, cas de CP2javaWS). En fait ce format, qui n'est qu'une représentation textuelle d'une grappe d'objets javascript (la conversion est d'ailleurs possible en faisant un eval() d'une chaîne), n'a pas été prévu pour gérer des messages complexes avec contrats (pour cela on préfèrait jusqu'à présent WSDL et SOAP). Dans la documentation de CP2JavaWS j'évoquais quelques recherches/trheads au sujet des limitations et évolutions possibles de JSON. Mais la simplicité de développement permise par l'utilisation de Cappuccino et d'un bridge comme CP2JavaWS compensent largement l'absence d'un format complet et d'un contrat. De plus CP2JavaWS gère déjà les collections de types hétérogènes et imbriquées (et bientôt les cycles), et lorsque la méthode methodSignatureForSelector sera implémentée dans Cappuccino, il sera possible de vérifier les paramètres passés auprès d'un contrat (protocole/interface Objective-J précisé lors de la récupération du proxy).
 Commenter
12-02-09 / 22:34 : Enregister une animation Core Animation (cjed)
Le fameux site CIMG propose une solution pour enregistrer des animations Core Animation vers une séquence QuickTime, depuis le code lançant l'animation (sans doute plus rapide que via un utilitaire). Le principe est de déclencher un timer au démarrage de l'animation, et à chaque invocation, de faire dessiner la layer dans un contexte Core Graphics, de la convertir en représentation d'image bitmap (NSBitmapImageRep), puis d'ajouter l'image (représentation TIFF ici) à un objet séquence QuickTime précédemment créé. La CA layer utilisée pour écrire dans le contexte est la presentationLayer (layer cadre) de la rootLayer, et non pas la layer animée.
 Commenter
12-02-09 / 22:12 : Core Animation / grid-cell layout automatique (cjed)
Sur le blog Mozketo on peut trouver une astuce très habile pour réaliser un grid-cell layout automatique en Objective-C, via la une CAConstraint. Dans cet example la contrainte Core Animation utilisée est la largeur, et elle est fixée sur la layer parent (superlayer). De plus sa valeur est fixée comme dépendante du nombr ede colonnes. Ainsi la largeur des cellules s'adapte automatiquement pour les répartir dans la largeur de la grille, lorsque le nombre de colonnes varie. Il n'est plus nécessaire de connaître la position de la cellule précédente pour répartir les cellules.
L'exemple ajoute également des rotations et transformations 3D aléatoires à chaque cellule (également via Core Animation).
La classe CAConstraint n'est cependant pas encore disponible dans Cappuccino.
 Commenter
11-02-09 / 23:37 : Cappuccino : layout automatique et récursive (cjed)
Un des (très nombreux) intérêts de Cappuccino pour la création d'interfaces (en plus d'Interface Builder, du binding dynamique/chaîne de délégation, des combinaisons de composants non figées, de la spécialisation sans héritage - par délégation -, du degré d'abstraction) est la gestion automatique des layouts (tutorial posté il y a deux mois). Contrairement aux bibliothèques de tags JSP (incluant JSF) et composants Java/Swing, l'AppKit de Cappuccino (comme en Cocoa) gère automatiquement la répartition des composants au niveau du container parent.
Il suffit de préciser pour les composants inclus les comportements souhaités (contraintes), par un masque de propriétés (via la méthode setAutoresizingMask) : CPViewWidthSizable, CPViewHeightSizable, CPViewMinXMargin, CPViewMaxXMargin, CPViewMinYMargin, CPViewMaxYMargin. La vue parent s'occupe alors automatiquement du placement, de manière récursive (en parcourant l'arbre des vues si plusieurs niveaux).

Dans une thread récente, un utilisateur expliquait d'ailleurs :
Thankfully "layout managers" are a dopey Java-like paradigm that Cocoa avoids. Cocoa pretty much has one (fairly sensible) layout paradigm. If you look at the 6 layout-related attributes that you can set on any view in IB, these translate directly to flags that you can set on any view's setAutoresizingMask: method from code. Views tell their parent which edges they want to be anchored to and which directions they wish their size to be expanded in. CPView figures out the rest "automagically" when it lays out its subview.
 Commenter
09-02-09 / 22:42 : Article au sujet de CP2JavaWS sur Ajaxian (cjed)
Le site de référence en matière de client riche / Web 2.0 (bientôt 3.0), Ajaxian, a publié aujourd'hui un article sur le bridge Cappuccino/Java webservices CP2JavaWS.
 Commenter
09-02-09 / 02:18 : CP2JavaWS 0.31 dispo (cjed)
Une nouvelle version - 0.31 - de CP2JavaWS est disponble sur sourceforge. Elle inclut les modifications suivantes :

- CP2JavaWSJSONServlet has been replaced by a filter. Then no need anymore for a servlet. If a servlet is still present, your application could then manage both JSON requests (originated from Cappuccino client applications using CP2JavaWSRemoteService proxy), through the CPJSONFilter, and classic web requests (managed by your servlet, Struts or Spring MVC servlet for example).

- the CPJSONFilter can work with any service factory (custom framework and/or IOC container). A listener is provided for integration with spring container (see the provided demo). You have then to add cp2javaws-springsupport.jar in web-inf/lib besides cp2javaws-filter.jar (and spring.jar obviously). If not using Spring, spring.jar (and cp2javaws-springsupport.jar) can be removed, avoiding any dependency.

- for custom service factory/framework, a listener example is provided (see server source code, DummyContextWrapperListener.java and DummyContextWrapper.java). Just modify these classes to get you service factory injected, and then export these two classes into a support.jar (the same as with cp2javaws-springsupport.jar).

- fixed date timezone management.
 1 commentaire
07-02-09 / 00:57 : Apple WebKit/HTML5 : la fin de Flash et Gears ? (cjed)
Avec ses avancées en termes d'accessibilité - nouvelles fonctionnalités et optimisation des performances (CSS Visual Effects extensions sur le plan graphique, et HTML5 Javascript database/Application Cache pour le stockage), le moteur WebKit d'Apple (déjà opérationnel et accéléré matériellement sur l'iPhone) s'attaque à la fois à Adobe AIR/Flex et Google Gears. Dans les deux cas Apple se sert de standards, comme elle l'a déjà fait pour la vidéo (H264). Ces standards devraient merger dans le container QuickTime X...

On peut lire sur Macgeneration un commentaire très intéressant (comme toujours de la part d'oomu) :

Il n'y a aucun avenir à terme, à Flash, pourquoi ? Parce que TOUS les services de flash sont mis, les uns après les autres, dans le navigateur standardisé :
- la vidéo et les animations ? HTML5
- la base de donnée locale ? HTML5
- les sous-process ? HTML5
Actionscript ? ben c'est javascript (notons que le moteur actionscript de flash9 fut donné à mozilla sous licence gpl)
Pour le vectoriel et animation : canvas dom+svg+javascript.

Ce qui se passe, c'est que le navigateur est tout simplement en train d'être enrichi. Ce qui avant se faisait dans la boite noire flash est maintenant exposé sous forme de html, css et javascript.
- html est le contenu,
- javascript est la programmation,
- css est la forme.
Pourquoi c'est important les animations et transformations en css ? parce que ce n'est qu'un style, une forme que peut prendre le site. ce n'est pas de l'interaction. il est très utile et efficace que cela soit modifiable simplement par css.
Javascript est l'interaction. Javascript modifiera via DOM toutes les propriétés css et contenu html.
Flash ce n'est pas un plugin seulement. si ce n'était qu'un plugin et du actionscript , flash serait nul et on n'en parlerai plus. Flash c'est un logiciel très étoffé, très complet. Flash MX. Il serait tout à fait possible qu'à terme, Adobe créé un générateur de code svg+js qui soit l'exacte de ce qui était avant propriétaire flash (le swf binaire).
Encore prématuré. HTML5 ne fournira pas tout ce que permet flash 10. Mais c'est clairement la voie, c'est clairement ce qui est désiré par à peu près tout le monde sauf Adobe. Par exemple, opengl sera accessible via DOM et js bientôt. cela sera encore un pan de moins pour flash.


Il ne manque plus qu'à cela un cadre en termes d'architecture pour les applications RDA, ce que fournit Cappuccino (binding dynamique, chaîne de délégation, code à écrire de haut niveau - abstraction complète de DOM - et très réduit, solution éprouvée), et CP2JavaWS (liaison transparente avec la partie serveur J2EE). Le Web 3.0 est né !
 Commenter
07-02-09 / 00:31 : HTML5 Javascript database / Application Cache (cjed)
Parmi les autres nouveautés apportées par HTML5, on trouve Javascript database support (disponible depuis Safari 3.1 desktop et Safari iPhone depuis l'OS 2.0), et Application Cache, disponible sur Safari iPhone depuis l'OS 2.1 - pas encore sur WebKit desktop :
web application with a manifest - defined perr the HTML5 spec - will be saved with any cached resources.

Un wrapper mutliplatforme et multi-browsers, ActiveRecord.js, permet de gérer de façon homogène la sauvegarde de données depuis une application RDA (javascript), quelle que soit l'implémentation utilisée : stockage en mémoire, ou dans une base de données (via des adaptateurs pour Jaxer MySQL, Jaxer SQLite, Adobe AIR, Google Gears, ou HTML5 Javascript database support).
 Commenter
06-02-09 / 23:27 : WebKit CSS Animations / accélération / VFX (cjed)
Apple a dévoilé les CSS Animation, disponibles dans les dernières versions (nightly builds) de WebKit, et déjà dans le Safari de l'iPhone (depuis le firmware 2.1). Ces animations sont de type explicite, avec répétition et possibilité de définir des images clés. Trois exemples sont fournis.

Les propriétés que l'on peut animer correspondent aux propriétés habituelles des styles CSS : position (left, right, top, bottom), couleur de fond (background-color), opacité (opacity), etc. Mais on peut également gérer l'animation de transformations (CSS Transforms) : valeur d'échelle (scale), valeur de rotation (rotate). Ainsi les transformations deviennent progressives (transitions). De manière générales les CSS Transitions permettent également des gradients et masks. L'ensemble de ces extensions autour des CSS est appelé le CSS Effects project.

On définit les propriétés à animer (et leurs valeurs intiales et finales) via un style CSS, et on déclenche et paramètre l'animation (nom de la CSS Animation précédente à animer - référence au nom de cette CSS -, durée de l'animation, nombre d'itérations, sens pour les répétitions) en fixant des propriétés d'une div, ou bien d'une seconde CSS. Pour définir des images clés, on définit plusieurs groupes de propriétés dans la CSS Animation (avec pour chaque groupe un pourcentage en préfixe, qui précise la position temporelle - dépend de la durée de la transition - de l'image clé).

La version iPhone de Safari contient des optimisations : accelerated animations and transforms, including 3d (pas encore disponibles dans la version desktop de WebKit). Des exemples sont accessibles sur l'iPhone Dev Center (enregistrement nécessaire), notamment Poster Circle, Card Flip, Finger Tips et Simple Browser.
Apple propose également les interfaces Javascript/CSSOM pour piloter encore plus précisément les animations (programmatically adjust the keyframes in an animation, or get the current transformation of a node), mais elles semblent moins documentées.

Tout ceci se rapproche de ce qu'il est possible de faire avec l'implémentation de CoreAnimation dans Cappuccino (est partielle, ne gère que les animations explicites - pas implicites -, de la même manière que les CSS Animations, mais apparemment sans accélération). Dans un article d'Ajaxian sur les CSS Animations, on peut lire le commentaire suivant : Having animation directly in the browser will always be faster than using JS for every frame. With CSS animation, JS could just handle keyframes. Il semblerait bien pourtant que Cappuccino utilise la même approche, ou alors WebKit propose des points d'entrée particuliers vers le système pour accélérer le rendu des images intermédiaires via la carte graphique. Ce principe est cependant évoqué dans une présentation de Cappuccino - The Road to Cappuccino with Francisco Tolmasky- (36') : Graphics, no DOM, card_do(), DOM (W3C DOM/IE DOM) or CSS (CSS/IE CSS) or Canvas (Canvas/VML). Certains attendent cependant des avancées côté SVG.

On peut également découvrir une vidéo d'une animation type CoverFlow (zflow) réalisée sur le Safari iPhone avec les CSS Visual Effects extensions (accélération matérielle gérée sur l'iPhone) : 3D CSS transforms, CSS Transitions, utilisation de Canvas (dans l'implémentation HTML 5 de WebKit/iPhone Safari) pour simuler les réflexions.

MAJ : Voici la réponse au sujet de l'implémentation utilisée par Cappuccino pour Core Animation (dépend bien du browser) et le support futur des CSS Animation et transforms :
This is the plan, but it is not yet implemented. Currently, CA in Cappuccino uses Canvas in Safari/Firefox/Opera and VML in IE to achieve transforms. However, it would be much more desirable to use the built in CSS transforms when supported. We would also like to do the same with animations: using timer-based animation in IE/Firefox but CSS "server" based animations in Safari. Unfortunately we simply haven't gotten around to take on this pretty daunting task.
On peut lire une présentation de Canvas, les critiques et la préférence pour certains à SVG.
 Commenter
05-02-09 / 23:46 : Cappuccino : animer TextField avec CoreAnimation (cjed)
Un exemple d'animation d'un CPTextField avec CoreAnimation est disponible ici (code source, réalisé mi-décembre). Il utilise la classe CPPropertyAnimation proposée par Nicholas Small.

Le texte est initiallement tronqué (requiert une zone d'affichage plus grande que la taille initiale de la vue) mais est correctement réparti sur plusieurs lignes auparavant. Un clic sur la vue démarre l'animation de la propriété, et le texte s'adapte aux nouvelles dimensions de la vue au fur et à mesure qu'elle s'agrandit. Une second clic lance le processus inverse. Pour cette animation (mode explicite) on passe uniquement la taille initiale et finale de la vue (propriété animée) et la durée souhaitée de l'animation. CoreAnimation calcule les images intermédiaires (commandes d'affichage Quartz) à partir des valeurs de taille incrémentées renvoyées par CPPropertyAnimation.

Il s'agit d'un proof of concept (pas de design des vues, formes et couleurs basiques pour voir plus facilement la zone animée). Il servira de base à la prochaine version du site, qui utilisera les fenêtres et vues avancées de Cappuccino (propose des fenêtres au look Cocoa, avec live dragging, composition et ombrage dynamique - grâce à une implémentation de Quartz en javascript -, que l'on peut combiner avec le support - basique - de CoreAnimation).

Cependant puisque l'application est du javascript, CoreAnimation ne peut pas bénéficier ici de l'accélération de la carte graphique (point important pour CoreAnimation sur OSX - voir l'utilisation intensive sur iPhone), qui permet normalement un empilement de milliers de layers sans impact sur les performances.
 1 commentaire
02-02-09 / 23:25 : Rencontre des 25 ans du Macintosh (cjed)
Malgré l'absence de Steve Jobs et d'autres personnages importants au 25ème anniversaire du Macintosh, on peut voir des photos intéressantes de cette rencontre.
 Commenter
02-02-09 / 23:13 : Flash pour iPhone / Google Earth 5 (cjed)
Adobe serait en train de travailler à une version complète et optimisée de Flash pour iPhone, avec le support d'Apple. De son côté Google a présenté une beta de Google Earth 5 : exploration des océans, mode time machine pour remonter le temps à divers endroits (images historiques), enregistrement de visites (avec possibilité d'ajouter une bande son et des commentaires).
 Commenter
02-02-09 / 12:02 : CP2JavaWS 0.3 final release (cjed)
La version 0.3 de CP2JavaWS est disponible. Elle apporte les améliorations suivantes :

- major refactoring and code cleaning, completely rewritten encoding and decoding on the client-side and server-side.
- that version now uses Objective-J categories to encode/decode full objects graphs, and allows to customize encoding/decoding (if needed) for custom objects
- encoding and decoding now manages any depth, including nested collections
- collections (CPArray/List and CPDictionary/Map) elements can be heterogeneous
- method's arguments (JSON encoded parameters) and return now provide the objjClassName for each node (including collections's elements), so the client-side is independant from server-side technology (language).
Besides the CP2JavaJSONServlet, a PHP implementation could then be added for example, keeping the same client-side CP proxy classes.
- the custom Objective-J classes to Java custom classes mapping has now to be done using a properties file on the server-side.

- version 0.35 is expected to use CPCoding protocol redefinition in categories in order for having transparent decoding/encoding on the server-side when Objective-J is also used on the server. - version 0.4 will add transparent authentication feature (automatic display of a user-provided view if 401 return code) with full Digest management (nonce, cnonce).

Note : the 0.3 final release also fixes bugs (that still were present on the 0.3 alpha pre-release) with Objective-J objects encoding (if an attribute was named "name", it leaded to a wrong value in the JSON string) and decoding (didn't manage decoding of collection elements).
 Commenter