J2EE / .Net - Taha Ben Salah
Transcription
J2EE / .Net - Taha Ben Salah
To Bean or Not To Bean That’s the question… Vision comparative des architectures J2EE et .NET Taha BEN SALAH [email protected] Version 1.2 / Dec. 2008 1 Agenda 1. L’Evolution des besoins & les enjeux des applications ‘Entreprise’ 2. Présentation J2EE 3. Présentation .Net 4. J2EE, points forts / faibles 5. .Net, points forts / faibles 6. Vision comparative J2EE / .Net 7. Convergence des deux plateformes 8. Conclusion : Le choix 2 L’évolution… 3 « La théorie de Darween »… Toujours d’actualité! Évolution des architectures 4 5 Évolution des besoins (1) Créer des applications sécurisées, “scalable”, fiables, portables, rapides à mettre en oeuvre, performantes, hautement disponibles qui puissent être facilement intégrées dans les environnements existants Mettre en œuvre des architectures N-tiers à base d’objets reposant sur les standards technologiques Applications Web reposant sur infrastructure technique serveurs d’applications / middleware (de 1995 à aujourd’hui) Créer des applications Web inter-opérables Former un réseau d’échange de services où toute information est accessible depuis n’importe quel média et depuis n’importe où sur Internet XML Web Services (de 2000 à aujourd’hui) 6 Évolution des besoins (2) Aider le développeur à se focaliser seulement sur la spécification des interfaces et la logique de son application Améliorer la productivité et la maîtrise de la gestion de l’infrastructure dans son cycle de vie Accélérer le ROI Les deux principales technologies du marché répondant à ces enjeux sont actuellement : J2EE (Sun, Java Community Process) .NET (Microsoft et sa dernière stratégie de framework applicatif) 7 Avant propos Première remarque, comparer ces différentes initiatives est bel et bien légitime. Toutes partagent une même ambition : Dessiner un cadre technologique (composé de langages, de protocoles...) au sein duquel des composants logiciels (et donc des services) pourront dialoguer à travers le réseau. A cette liste, nous pourrions aussi ajouter un autre item : les Web Services. 8 Avant propos Ces initiatives peuvent être classées dans deux groupes : Celles qui fédèrent avant tout des protocoles et langages devenus des standards ou sur le point de l'être (Corba, J2EE, les Web Services) Celles qui, représentant avant tout la stratégie d'un éditeur (One de Sun et .Net de Microsoft), ne coiffent pas seulement des spécifications mais aussi des logiciels. 9 J2EE… « Libre comme l’air »…! 10 Java, l’histoire, le commencement… En 1995, Sun a présenté un nouveau langage baptisé Java sous le signe d’un grain de café Raison d ’être : Initialement destiné aux Systèmes embarqués Présenté comme étant le langage d ’Internet : premier langage permettant de développer des applications sur Internet : « Applet » s ’exécutant sur un navigateur (Hot Java) 11 Java : Caractéristiques Les caractéristiques principales de ce langage sont Langage purement Objet Similaire à C, C++ Portable « Write Once, run anywhere » Une seule compilation (différent de QT) 12 Machine Virtuelle : Interprété (semiinterprété) Sécurisé Robuste Java : Caractéristiques, la suite… Gestion dynamique de la mémoire (Garbage Collector) Absence 13 des pointeurs, des généricités (Templates), du précompilateur, de la surcharge des opérateurs brefs de tous les vices (qui toutefois font la puissance de C et C++) à l’origine de 90% des Bugs. Complet (Très riche bibliothèque) Gratuit / (JDK, Sources compris) Java, L ’architecture 14 Java, la saga continue… En quelque années, Java a envoûté la plupart des développeurs, des entreprises et des centres de recherche La communauté de l’Open Source l’a pratiquement adopté Les grands éditeurs aussi (Netscape, Oracle, IBM, HP, Toshiba, Lotus Development Corp, Macromedia Inc., Borland, Mitsubishi Electronics, Sybase, Symatec, Adobe, et … Microsoft) 15 Java, encore et toujours Dans le sillage de Java, Sun a commencé à définir un modèle d'architecture dont Java n'est qu'une simple brique parmi d'autres : La plateforme Java 2 est née. Cette plateforme est organisée en : 16 Java 2 Standard Edition Java 2 Micro Edition Java 2 Entreprise Edition 17 Java 2 Standard Edition Connue sous le nom de J2SE (ou tout simplement JDK) Elle même nouvellement organisée en : Java Core Contient toutes les classes et bibliothèques de base définissants le langage lui même Java Desktop Contient les bibliothèques graphiques (les fameux Swing et AWT) Destiné aux applications d’ordre général, très souvent sur les PC 18 Java 2 Micro Edition Connue sous le nom de J2ME Parce que les ressources matérielles (mémoire, processeur, …etc) sont très critiques sur les systèmes embarqués, Sun a préféré le lancement d’une Version Light du langage Moins de types Pas de gestion de mémoire Bibliothèque allégée, … Destinée aux 19 Téléphones portables PDA Cartes à Puces, …etc. Java 2 Entreprise Edition Mieux connue sous le nom J2EE Une plate-forme d'exécution par excellence Se base sur J2SE Le modèle J2EE est co-élaboré aujourd'hui au sein du JCP (Java Community Process) qui réunit Sun et de nombreux autres éditeurs autour des travaux en cours 20 J2EE, c’est… Une dizaine de services et de spécifications techniques : 21 JDBC (Java Data Base Connectivity), pour les connexions aux bases de données JMS (Java Message Services) pour travailler avec des bus logiciels asynchrones comme MQ Series d'IBM Les Servlets , des composants Web (coté Serveur) Les JSP (Java Server Pages) des pages web exécutées sur le serveur qui combinent HTML et code Java Les EJB (Enterprise Java Beans), un modèle de composants pour les développements Java. … Services J2EE 22 J2EE, c’est aussi… Une plateforme imposant Une architecture distribuée Un cycle de vie Component Creation Component Packaging Application Assembly Application Deployment Un nombre d’acteurs/Rôles Un nombre de Design Patterns (Recommandations) 23 J2EE, c ’est aussi Nécessite un Serveur d ’Application garant des aspects 24 Sécurité Haute disponibilité Partage de charge Transactions Accès aux données Synchronisations (messages Synchrones / messages Asynchrones) Serveurs d ’applications Plusieurs implémentations J2EEDK (Implémentation de référence de SUN) Websphere (IBM) Oracle 9iAS / 10G (Oracle) Weblogic (BEA, Oracle) JBoss (Open Source, RedHat) Jonas (Open Source, OW2 : INRIA) GlassFish (Open Source, Sun) 25 Architecture J2EE 26 Services / Architecture J2EE 27 Composants J2EE, rôles Couche de présentation Web : JSP (Java Server Pages), JSF (Java Server Faces) Desktop : Application/Applet Swing, AWT Couche Applicative Logique Métier Servlet, Web Services (Dans un conteneur WEB), EJB (Dans un conteneur EJB) Entity (BMP/CMP) Session (Stateful/Stateless) Message Driven Accès aux Données 28 Jdbc natif / encapsulé dans les EJB Autres services Assurés par les Serveurs d’application Gestion de la sécurité Conteneurs EJB (Profiles), Web (Realm) Gestion des transactions Conteneurs EJB, Web Communication : Protocoles de distribution JNDI, RMI, IIOP, HTTP Montée en charge Conteneurs EJB, Web 29 Composants partagés/dupliqués Sun ONE « Open Net Environnement » Pour faire face à l'initiative marketing ".Net" et aussi pour donner de la cohérence à ses nombreuses activités logicielles (Java et J2EE, l'offre iPlanet, les outils de développement Forte), Sun a ressenti le besoin d'élaborer à son tour une marque. Sun One ne représente donc pas un nouveau modèle d'architecture mais plutôt le nom de guerre de Sun sur la scène des architectures Web... 30 Net . « Le gros bébé »…! 31 .Net, c’est… ".Net" est une marque utilisée par Microsoft comme Hérault de son virage stratégique vers la Webisation totale de son offre logicielle. A la différence de J2EE dont le socle est utilisable par d'autres fournisseurs de serveurs d'applications, la plateforme .Net reste la propriété exclusive de son créateur : Microsoft. 32 .Net, les composantes Plusieurs produits : le système d'exploitation Windows et ses dérivés dédiés aux terminaux portables (Windows CE .Net) et aux applications embarquées (Windows XP Embedded). Mais également le serveur Web IIS (Internet Information Server), le serveur d'intégration Biztalk Server ainsi que la base de données SQL Server 33 .Net, l’architecture Assez logiquement, .Net chapeaute donc les standards auxquels la firme contribue XML et ses déclinaisons Les langages et techniques qu'elle défend (C#, les Active Server Pages, etc) et ses logiciels 34 Visual Studio.net Serveur B to B Biztalk Versions ".net" de Windows. .Net, l’architecture en action 35 .Net, l’architecture 36 .Net, l’architecture 37 .Net, un peu, beaucoup, passionnément… Ces choix techniques dessinent une architecture logicielle concurrente du modèle J2EE et qui, comme ce dernier, n'est pas dans un rapport d'opposition avec les Web Services mais de complémentarité. 38 .Net Caractéristiques (1) Muti-langage C++, VB, J# , C#, APL, Fortran, Pascal, Perl, Python, JScript, COBOL,Standard ML, Haskell, RPG, Mercury, Scheme, Curriculum, Mondrian, SmallTalk, Eiffel, Oberon, Forth, Oz Accent sur le nouveau né C# Se base sur une machine virtuelle (comme dans Java), la CLR Sécurisé Support des Web Services Très bonne Integration avec les produits Microsoft (Office, SQL Server, …,etc.) 39 .Net Caractéristiques (2) Environnement de développement Puissant Visual Studio .Net pour tous les langages Une seule compilation pour tous les Système d’exploitation Windows Optimisation du code natif à l’exécution (équivalent au Just In Time Compiler de Java) qui profite au mieux des caractéristiques matérielles de la machine hôte 40 Web Services « Tout le monde en parle »…! 41 Web Services Cheval de Bataille, arme de pointe ou Lance de guerre pour les deux parties. Activement promus par d’autres éditeurs comme IBM, et élaborés (entre autres) au sein d'un organisme comme le W3C (World Wide Web Consortium). 42 Web Services, c’est … Des protocoles qui transportent et véhiculent des messages entre des services installés sur des Serveurs Web et utilisent XML pour décrire leurs structures de données qui peut être complexe. Ce qui - a priori - doit faciliter la manipulation des services ainsi décrits. 43 Web Services, c’est aussi … Ce que l'on nomme les "Web Services" c’est l’ensemble des technologies de communication à base d’XML: 44 SOAP (Simple Object Access Protocol) WSDL (Web Services Description Language) UDDI (Universal Description, Discovery, and Integration) Web Services, c’est aussi … SOAP (Simple Communication / transport Spécification pour échange d’informations dans un environnement distribué Basé sur XML RPC WSDL (Web Object Access Protocol) Services Description Language) Définition des types et opérations fournis par les services offerts UDDI (Universal Integration) 45 Description, Discovery, and Pages Blanches/Jaunes Annuaire mondial d’entreprises permettant d’automatiser les communications entre prestataires. XML-RPC ou SOAP ? Tous deux protocoles RPC Like avec XML comme support de transfert de données XML-RPC est le concurrent direct de SOAP. Il reste très humble quant à ses ambitions Très simple Types primitifs, structures et tableaux Mais Ne gère pas différents types d’encodages Ne permet pas de définir des types utilisateurs complexes Ne permet pas le formatage / extension de l’enveloppe (format XML d’échange) Spécification clôturée 46 Service ou Composant? 47 Nous parlons ici de "service" et non de "composant" à bon escient. Si Corba et J2EE décrivent une architecture de composants logiciels, les Web Services définissent plutôt comment interagir avec des services fonctionnels. Et, pour poursuivre la comparaison, le rôle d'IDL dans Corba peut être comparé à celui de WSDL dans les Web Services. Tous les deux décrivent un objet dans une architecture (de composants ou de services). J2EE, points forts… « être ou ne pas être le meilleur telle est la question »…! 48 L’avis de Sun Sun a publié un petit argumentaire sur : "Pourquoi choisir J2EE ?" Il est toujours intéressant de connaître la position de Sun sur le sujet 49 1. 2. 3. 4. 5. Integration Compatibilité Le Model de programmation J2EE Support Web Services Open Standards Intégration Multi-vendor J2EE Connector Architecture Programmes basés sur une technologies orientée composants Java avec des systèmes hétérogènes, relationnels et non relationnels. Simplifie l’interopérabilité des composants pour la création de systèmes complexes tels que Enterprise Resource Planning (ERP) Customer Relationship Management (CRM) 50 Intégration Permet l’interaction entre des technologies différentes Accès au données (relationnelles, hiérarchiques, …) Mainframes et terminaux PC Mode synchrone / asynchrones (JMS) Messages fiables sur des réseaux non fiables Interopérabilité avec d’autres composants distribués implémentés avec d’autres langages (CORBA) 51 Compatibilité J2EE Compatibility Test Suite (CTS) Un total de quelques 15,000 CTS Indépendance du serveur d’application Compatibilité entres les composants développés sur un IDE CTS et déployés sur un SA CTS 52 Modèle de programmation J2EE est une architecture end-to-end basée sur des modèles de programmations utilisant des concepts avancés tels que les Servlets, les EJB, JMS, …etc. 53 Support des Services Web Interopérable avec N'importe quelle autre technologie avec les Web services Java Web Services Developer Pack (Java WSDP) est une implémentation des standards: Web Services Description Language (WSDL) Simple Object Access Protocol (SOAP) ebXML (electronic business Extensible Markup Language) UDDI (Universal Description, Discovery, and Integration) XML-based Remote Procedure Calls (JAX-RPC) 54 Basé sur des standards Création du Java Community Process Processus de Standardisation normalisé 55 Création d’un Java Specification Request (JSR) Approbation par JCP Executive Committee, et élaboration d’un premier draft de la spécification Révision du draft par the Executive Committee,le JCP, puis le public (jcp.org) Révision après feedback du public par The Expert Group pour valider l’implémentation de référence et la complétude de la Technology Compatibility Kit (TCK) Approbation finale du package de spécification The Executive Committee. Intégration de la spécification dans Java 2 platform Basé sur des standards Sun capitalise sur les standards Exemple : l'implémentation de départ des EJB était basée sur RMI (protocole propriétaire Java) mais les nouvelles implémentation sont désormais basée sur RMI/IIOP qui est une surcouche de RMI au dessus de Corba garantissant l'interopérabilité des composants EJB de Java avec tout Composant Corba. 56 Portable Compatible avec +256 Systèmes d’exploitation +384 navigateurs Les systèmes embarqués (PDA, téléphones portables, Stations de Jeu, ...) Les PC Les gros systèmes 57 Robuste Conceptuellement très robuste Fortifié par des Design Patterns (Modèles conceptuels) qui ont fait leurs preuves (MVC, …etc.) Ne permet pas les opérations illégales sur la mémoire et les périphériques 58 Robuste La notion du Composant Web : Servlet a révolutionné le développement par composants dans des applications Web réputées pour être très mal développées en ce sens qu'elles maquent d'appui conceptuel et de d'architecture facilitant la maintenabilité du code. 59 Robuste La notion du Composant EJB Entité et Session ont révolutionné le développement par composants dans des applications a fort degrés de complexité en permettant la délégation de tous les services non métiers mais nécessaires (sécurité, scalabilité, … etc.) à un Serveur d’Application. Cette notion est unique et n’a pas d’équivalent dans d’autres technologies 60 Gratuit sont gratuits : Le SDK Les sources La documentation La machine virtuelle (JRE) sur la plupart des systèmes d’exploitation 61 Open Source Le choix incontesté de la communauté de l'Open Source L'Open Source est entrain de faire des preuves : eclosion des meilleurs outils Systèmes d'exploitations (Linux) Bases de données (MySQL) Éditeurs (Eclipse) Logiciels (ERP) Composants La spécification de la machine virtuelle et de toutes les API sont Libres L’implémentation de la bibliothèque standard l’est aussi 62 Le premier Choix Communauté des développeurs en extension phénoménale Le nombre de sites dédiées Java / J2EE est impressionnants La communauté des scientifiques nécessitant des calculs mathématiques souvent de taille a fait le choix de Java bien que l’aspect performances soit au centre de ses soucis. 63 Extensible Bien que de haut niveau, il reste toujours la possibilité (non recommandée) d'introduire du code natif avec JNI Nécessaire pour les fonctionnalités liées aux systèmes d’exploitations (i.e.: La base de registre pour Windows) 64 Meilleure répartition des tâches / des rôles Notion de serveurs d'applications garantissant : la scalabilité la disponibilité la sécurité Dissociation entre le niveau Accès aux donnés, les fonctionnalités métier, l’administration, le tuning (optimisation), la présentation. 65 Le premier Choix des SS2I Il suffit simplement de consulter des offres d'emploi pour des projets de développement : à environ 60% voire 70% cela concerne des postes avec spécialité Java (2003). 66 Partenaires de Choix 67 IBM SAP HP Oracle …etc. Pluralité des IDE, des SA Le développeur ou l’entreprise a un large éventail de choix pour les outils de développement et de déploiement. Les gros Éditeurs offrent chacun leur propres solutions (développement + déploiement) mais rien n’empêche d’utiliser un JBuilder de Borland pour le développement et un Oracle Application Server pour le déploiement. 68 Meilleurs IDE sur le marché Java peut se vanter d’avoir les meilleurs IDE du marché qui ne sont pas fournis par Sun : IntelliJ (Jet Brain) Netbeans (Open Source) Eclipse (Open Source) JBuilder (Borland) JDevelopper (Oracle) 69 J2EE, faiblesses… « Le talon d’Achille »…! 70 Faiblesses héritées du langage Java Java est interprété donc lent Java manque de productivité Java est bavard Absence du pré-processeur Absence de surcharge d’opérateurs Absence du mécanisme de gestion des versions pour les composants 71 Performances Java est interprété donc plus lent qu’un code natif (C, C++) Les implémentations actuelles des serveurs d'applications sont peu performantes La spécification EJB1.1 se soucie très peu des performances. La spécification EJB2.0 se rattrape un peu avec le caching (introduction des interface ‘Locales’). 72 Performances La spécification EJB3.0 présente de meilleures performances. La spécification EJB3.1 introduit de nouveaux concepts tant attendus permettant d’augmenter les performances. Elimination des Interfaces Blue Print Singleton Amélioration des schedulers (EJB Timer) 73 Performances Plusieurs Benchmarks on montré que J2EE est très lent comparé à une implémentation sans Serveur d’application (avec ou sans .Net) D’autre Benchmarks sur les Services Web ont montré que les performances sont pratiquement équivalentes. 74 Courbe d'apprentissage logarithmique Courbe d'apprentissage lente Java : destiné au développeur personnel / professionnel J2EE : destiné au développeur professionnel et expérimenté Le développement des applications par composants J2EE (EJB) est loin d'être une mince affaire L’optimisation du code / configuration de déploiement est encore plus difficile 75 Divergences 76 La pluralité des éditeurs a fait que certains d'entre-eux ont pris la liberté de 'personnaliser' les standards à leur tailles: IBM et Oracle ont Chacun leur propres Machines virtuelle Java non compatible 100% avec la Machine virtuelle de référence (de Sun) Certains Éditeurs de serveurs d'application, Oracle (Oracle Application Server) par exemple, utilisent un protocole propriétaire (ORMI) pour la communication avec les EJBs différent du standard RMI/IIOP .Net, points forts… « Qui est le lièvre et qui est la tortue? »…! 77 L’avis de Microsoft Il est autant intéressant de connaître la position de Microsoft sur le sujet Les Atouts de .Net sont : Architecture Agile Rapidité de développement Services améliorés 78 Rapidité de développement Intégration des Web Services Réduire le temps de production (Time to Market) Améliorer le TCO (Total Cost of Ownership) Capitaliser sur l’investissement courant 79 Rapidité de développement Support de plusieurs langages Destiné à tout type d’application Interaction profonde entre les différents langages supportés Des outils de développements intégrés et très productifs (Microsoft Visual Studio® .NET) 80 Rapidité de développement Écrire moins de code Bénéficier des services fournis par Windows 2003 81 transaction monitor message queuing engine data access subsystem (SQL Server) Web server (IIS) Services améliorées Amélioration de la performance Simplification du déploiement des applications Amélioration de la fiabilité Code, mémoire, transactions & processus managés Amélioration de la sécurité à base de rôles et de privilèges 82 Performances l'application de référence des J2EE BluePrints a été réécrite en une version C# sur .NET par une société tierce. Les résultats des benchmarks affichent des performances 28 fois supérieures pour .NET et un nombre d’utilisateurs multiplié par 6 pour le même hardware c'est Oracle 9iAS qui a été utilisé pour la version J2EE... 83 CLR Introduction de la notion de machine virtuelle (CLR) Indépendance du langage de programmation Possibilité d’écrire les bouts d’un même programme avec plusieurs langages à la fois en utilisant à chaque fois le langage le mieux approprié. 84 Nombre de développeurs Communauté des développeurs hérité de l'excellent outil Visual Studio VB6 C++... 85 Nouvelles technologies ASP.NET introduit une technologie appelée la smart navigation : sur un navigateur récent, il n ’est pas nécessaire de recharger l'intégralité de la page mais juste la partie qui a subit des modifications. De plus les pages ASP.NET sont des dll compilées donc le code de la page est optimisé... Web Services 86 Gestion du versionning Avec l’introduction de la notion des assemblies, Microsoft améliore au mieux la notion de déploiement de version des archives déployées. 87 Ease Of Use Coding Sur le thème développer plus facilement Préprocesseurs #define SOME_VAR = 15 Des structures de contrôles spéciales (foreach) foreach (XmlNode node in xmlElement.ChildNodes){…} Les types énumérés : enum Color : byte { RED = 1, BLUE = 2, GREEN = 3 }; 88 Ease Of Use Coding Les attributs (décorations) [AuthorIs("Michael")] class MyClass { ... } ... [AttributeUsage(AttributeTargets.All)] public class AuthorIsAttribute : Attribute { private string m_Name; public AuthorIsAttribute(string name) { m_Name = name;} } 89 Ease Of Use Coding Les propriétés class MyClass { ... public double x { set { if (x < 0) throw new ArgumentException (“< 0”); m_x = value; } get { return m_x; } } ... // User: MyClass m = new MyClass(); m.x = 22; 90 .Net, faiblesses… « Le retour de la médaille »…! 91 Non portable Uniquement Windows, navigateur IE6 nécessaire Et encore : .NET n'est pas portable sur DOS, WIN3.1, WIN95 Taille du Runtime (23Mo compressé,120Mo installé) 92 Microsoft sur la touche… Pour la première fois, Microsoft semble dépassée par les évènements D’une part PC vs Mainframes DOS puis Windows vs Unix Internet Explorer vs Netscape Microsoft Office vs Outils bureautiques absents sous Unix (vi/Latex) Excel a été élu le logiciel du siècle D’autre part 93 Le SOAP (Web Services) a été inventé par Microsoft pourtant c'est Sun qui en a mieux montré l'intérêt avec J2EE C# est un clone de Java J# persiste bien que très proche de c# Productivité ou paresse? L'intérêt porté sur le thème ‘ ease of use ’ ou facilité de développement dégrade parfois le coté conceptuel du framework. 94 Les IDE Microsoft dépassés ?? Les outils de développements de .Net ne sont pas à la mesure des outils matures développés pour Java (par exemple Intellij, JBuilder) 95 Compatibilité Compatibilité ascendante absente Microsoft bloque les supports sur les produits Visual Studio 6 et pousse les développeurs a passer à .Net .Net non compatible avec tous les systèmes Windows. 96 Le verdict…?? « l’heure a sonné..., mais toujours personne à la porte »…! 97 Ni oui Ni non, mais peut être… Évidemment rien n’est parfait, mais il ne faut pas oublier le rôle de la presse et des campagnes commerciales de part et d’autres qui omettent ou surestiment sciemment des caractéristiques ou des faits qui peuvent faire changer d’avis. On essayera dans la suite de modérer les préjugés et les emblèmes attribués aux deux frameworks. 98 Les Langages sont très proches Java et C# sont très proches tant au niveau de la structure du langage qu ’au niveau de l ’architecture elle même (Machine virtuelle vs CLR) Deux langages purement Objet Très similaires à C++ Prévoient un Ramasse Miette (Garbage Collector) API similaires 99 L ’exemple Hello World // c# (fichier MyClass.cs) using System; namespace MyNameSpace { public class MyClass { public static void Main(String [] args) { Console.WriteLine("Hello, C#!"); } } } // java (fichier MyClass.java) package MyPackage; public class MyClass { public static void main(String [] args) { System.out.println("Hello, Java!"); } } 100 Object : La base de tout //Java public class Object { public Object(); public boolean equals(Object obj); public final Class getClass(); public int hashCode(); public final void notify(); public final void notifyAll(); public String toString(); public final void wait() throws InterruptedException; public final void wait(long timeout) throws InterruptedException; public final void wait(long timeout, int nanos) throws InterruptedException; protected Object clone() throws CloneNotSupportedException; protected void finalize() throws Throwable; } 101 Object : La base de tout //c# public class Object { public virtual int GetHashCode(); public virtual bool Equals(); public virtual String ToString(); public static bool Equals(object a, object b); public static bool ReferenceEquals(object a, object b); public Type GetType(); protected object MemberWiseClone(); protected virtual void Finalize()´; } 102 .Net, Architecture 103 Java, Architecture 104 Java est Portable mais pas DotNet? Mono (http://www.go-mono.org) Une implémentation de .Net sous Linux Open Source Le projet est baptisé Mono Incorpore une implémentation de ASP.Net Mais… Quel intérêt de passer à un serveur Linux pour un administrateur / développeur Windows à moins que les Windows restent peu fiables ? Protable-NotNet (http://www.dotguru.org) OS X / BeOS Rotor (Microsoft source de l’implémentation d référence du framework) : Win 105 XP & Unix FreeBSD Java est plus lent? Ce n'est pas forcément étonnant si le CLR est plus proche de l'API Windows que celui de java. Il ne reste plus qu'à attendre un Mono stable pour pouvoir juger. J2SDK 1.4 est beaucoup plus rapide que le 1.3 et Sun promet que le 1.5 a promis encore plus de rapidité et elle a bien tenu sa promesse, le 1.6 est phénoménal. La spécification des EJB 3.0/3.1 présente de nettes améliorations coté performance avec des requêtes EJB-QL plus proches de SQL est donc plus performantes 106 Java est plus lent? Un jeu de Rôle 3D en Java (Jake2) , est certainement une bonne démonstration de la rapidité très acceptable de Java 107 .Net n'est pas gratuit ? Le framework .NET est gratuit que ce soit le SDK ou le Runtime Il existe aussi des IDE gratuits : Microsoft Webmatrix pour ASP.NET CsharpBuilder pour C# et VB.net La seule chose payante dans .NET c'est la licence Windows pour le serveur => Avec Mono (Novell) sous Linux c’est 100% Libre. 108 Outils Microsoft plus productifs? Java peut se vanter d'avoir les 3 meilleurs IDE jamais développés : IntelliJ Idea (Jet Brain) Netbeans (Open Source) Eclipse (Open Source) Plus productifs que Visual Studio .Net Jet Brain vient de commercialiser un plugin à installer sur Visual Studio .Net pour y rajouter quelques unes des superbes fonctionnalités de IntelliJ. 109 Productivité coté langage, Microsoft a de l’avance (1) ? Absence de Pré-processeur Java n'inclut pas un pré-processeur certes plusieurs implémentations de préprocesseurs ont été réalisées pour java, mais les développeurs ont bien compris qu'ils n'en avaient nullement besoin dans la presque totalité des cas. Le compilateur Java Optimise de façon très intelligente 110 Productivité coté langage, Microsoft a de l’avance (2) ? Java : types énumérés, de boucles foreach, …etc J2SDK 1.5/ J2EE 1.5 se focalise sur le thème ‘ease of use’ en remaniant le langage pour introduire des structures et des facilités déjà implémentées dans .Net. Par ailleurs, d’autres fonctionnalités proposées par le J2SDK 1.5 ne sont pas incluses dans .Net 1.1 mais Microsoft a les a intégré à la version 2.0 (généricité), puis dans la version 3 (inner class) Les Annotations ont simplifié JEE 111 Productivité coté langage, Microsoft a de l’avance (2) ? EJB 3.1 @Stateless @WebService public class ClientBean { @PersistenceContext private EntityManager em; @WebMethod public void ajouterClient(Client c) { em.persist(c); } } 112 Productivité coté langage, Microsoft a de l’avance (3) ? Java : Bavard Si Java est réputé pour être un langage bavard et peu productif, pourquoi la lance de guerre de Microsoft serait-elle C# ? 113 J2EE supporte un seul langage, .Net, lui, plusieurs L'impression que donne la technologie .NET c'est plutôt de vouloir se débarrasser d'un paquet de langages de programmation supportés par Microsoft avec sa suite Visual Studio afin de n'en conserver qu'un seul C# (ou Java’). Plusieurs langages ont déjà été portés sur Java (compilés vers la machine virtuelle Java) 114 .Net n’est pas aussi robuste ni sécurisé que J2EE .Net se base sur un mécanisme très similaire pour ne pas dire cloné de celui de Java/J2EE (sandbox). En matière de Serveurs, Windows 2003, jouant le rôle d’un serveur d’application, est semble-t-il très sécurité est bien plus fiable que Windows 2000 déjà apprécié sans parler de ses performances. 115 Microsoft et Sun sont en guerre? J2EE ET .NET ne sont pas des religions Comme dans toute guerre, il n’y a que les soldats et le peuple qui en subissent les conséquences, les politiciens eux, ils négocient autour d’une table, un café à la main. Standard communs, SUN & Microsoft. Windows 2003 très performant avec JSP 116 Le verdict… « C’est de la logique floue, enfin… »…! 117 Un avis, … J2EE est pour Les gros projets avec un niveau de complexité important Les systèmes hétérogènes Lorsque la fiabilité et la robustesse sont critiques .Net est pour 118 Les projets de taille petite ou moyenne Lorsque la productivité est plus importante que la cohérence et la bonne lisibilité du code Pour les projets dédiés uniquement à Windows (coté client et serveur) ou presque Lorsque la performance est un facteur important Conclusion Concurrence Agressive entre Sun & Microsoft Sun a Compris que mieux vaut vendre les services que les produits Microsoft est déjà aux anges avec les seules ventes d’Office et de Windows Au profit du développeur et de l’entreprise : Plus simple Plus puissant 119 Noble but… à méditer "J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone."- Bjarne Stroustrup Feedback: [email protected] http://vpc.tribe.de Taha BEN SALAH, J2EE Expert 120 Feedback: [email protected] http://vpc.tribe.de Taha BEN SALAH, J2EE Expert 121 Références 122 http://msdn.microsoft.com/practices http://msdn.microsoft.com/architecture http://shop.microsoft.com/practices http://java.sun.com http://www.microsoft.com http://dotnet.developpez.net http://www.dotnet247.com http://www.dotnetguru.org http://www.dotnet-fr.org http://application-servers.com http://www.theserverside.com http://www.freeroller.net http://staff.develop.com http://www.bytonic.de http://ils.unc.edu/blaze/java/javahist.html Merci ! Questions? 123