• [^] # Re: Intérêt

    Posté par (site web personnel) . En réponse à la dépêche Sortie d'une première version stable de Go. Évalué à 7.

    J'ai lu un peu de travers, mais quelques points tout de même.

    Franchement, si tu ne veux pas te prendre la tête utilise Gradle et non maven (gradle lit les dép maven). C'est beaucoup plus agréable. Maven c'est bien, c'est bien pour certaines parties des dépendances, mais c'est chiant.

    Et pour faire du http, soit tu prends un truc comme play (on va dire en gros que c'est comparable à utiliser un symfony ou rails sur le principe) soit tu fais plus léger, moins guidé, mais à la main (c'est la solution que je préfère).

    Par exemple, voici un petit fichier gradle qui te met à dispo tout ce qu'il faut :

    apply plugin: 'java'
    apply plugin: 'application'
    apply plugin: 'eclipse'
    sourceCompatibility = 1.6
    version = '0.1.0'
    mainClassName = "main.Main"
    repositories {
     mavenCentral()
    }
    dependencies {
     compile group: 'com.google.inject', name: 'guice', version: '3.0'
     compile group: 'com.google.inject.extensions', name: 'guice-assistedinject', version: '3.0'
     compile group: 'com.google.inject.extensions', name: 'guice-servlet', version: '3.0'
     compile group: 'com.sun.jersey.contribs', name: 'jersey-guice', version: '1.9-ea06'
     compile group: 'org.eclipse.jetty', name: 'jetty-server', version: '8.0.0.M3'
     compile group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '8.0.0.M3'
     compile group: 'com.sun.jersey', name: 'jersey-server', version: '1.9-ea03'
     compile group: 'com.sun.jersey', name: 'jersey-core', version: '1.9-ea03'
     compile group: 'com.google.code.gson', name: 'gson', version: '2.1'
     compile group: 'com.google.guava', name: 'guava', version: '11.0.1'
     compile fileTree(dir: 'libs', include: '*.jar')
    }
    
    

    En gros :

    • compile du java
    • lance en tant qu'application
    • fourni un projet eclipse
    • utilise le dépot central de maven
    • charge un certain nombre de dépendances, entre autre :
      • Injection de dépendances avec Guice (nikel)
      • Jetty comme serveur web
      • guice, jetty, jersey pour coder simplement une appli web (sans war, sans webapp, juste de l'injection, des servlets et du REST)
      • gson pour faire du json
      • guava parce que c'est bien (cache par exemple)
      • et surtout, chargement des .jar locaux, ne provenant donc pas de maven. Parfait pour mixer dépendances d'un repository et jar buildés à la main (chose que maven ne permet pas comme ça)

    Avec une base de ce genre, tu est tranquille pour développer.

    Et en gros ton appli se résume à ça :

    /**
     * Run the Jetty server with a default Guice handler
     * @throws Exception Exceptions
     */
     public void run() throws Exception {
     server = new Server(port);
     ServletContextHandler sch = getDefaultContextHandler();
     sch.addEventListener(new MyServletConfig());
     server.setHandler(sch);
     server.start();
     server.join();
     }
     /**
     * @return a default servlet context handler using Guice.
     */
     private ServletContextHandler getDefaultContextHandler() {
     ServletContextHandler sch = new ServletContextHandler(ServletContextHandler.SESSIONS);
     sch.setContextPath("/");
     sch.addFilter(GuiceFilter.class, "/*", null);
     sch.addServlet(DefaultServlet.class, "/");
     return sch;
     }
    
    

    Le problème c'est que c'est loin d'être la manière "classique" de faire en java. Beaucoup de monde est resté enfermé dans une logique JEE totalement monstrueuse, bien bourrine et surtout absolument pas agréable.
    Avec un truc du genre du peu enfin coder "facilement" en java sans te prendre trop la tête.