Affichage des articles dont le libellé est java. Afficher tous les articles
Affichage des articles dont le libellé est java. Afficher tous les articles

mardi 17 décembre 2013

Pourquoi Paypal migre ses applications de Java/J2E vers Node.js

Paypal a fait une annonce qui fait le tour du web: cet acteur majeur dans le moyen de paiement a annoncé l'abandon de Java/J2E en faveur de Node.js pour tous ses services.
Lire l'article ici.  ou ici en francais.
Cette décision est motivée par:

  • La durée raccourcie du cycle de mise en production
  • La durée raccourcie d'apprentissage de la filière Javascript
  • Et surtout pour des raisons de coût et  de performance. 
Site Payal:(lien ici)

Sur la performance:
  • Double the requests per second vs. the Java application. This is even more interesting because our initial performance results were using a single core for the node.js application compared to five cores in Java. We expect to increase this divide further.
  • 35% decrease in the average response time for the same page. This resulted in the pages being served 200ms faster— something users will definitely notice.
Sur les couts:
  • Built almost twice as fast with fewer people
  • Written in 33% fewer lines of code
  • Constructed with 40% fewer file
Les gains  d'apprentissage constaté dans la nouvelle filière est  de 1 pour 10  (1 jour pour javascript vs 10 jours pour J2E) . La pile J2E utilisée était le  framework Spring.

Paypal a mis en place une pile logicielle à base du framework Express. Et a reversé des librairies javascript servant à prendre en charge la sécurité dont

Lusca
Out-of-the-box application security. Lusca is middleware that can be deployed over Express, and configured to plug common attack vectors. When used, it will:
• Enable Cross Site Request Forgery (CSRF) headers.
• Enable Content Security Policy (CSP) headers.
• Enable X-FRAME-OPTIONS headers to help prevent Clickjacking.
• Enable Platform for Privacy Preferences Project (P3P) headers.
Lusca (lien ici) implemente la couche sécurité pour Express.

Donc: moins de ligne, moins de personnel , plus rapide et plus simple.

lundi 3 décembre 2012

Javascript: l'invité d'honneur de la conférence javaone 2012

La grande messe java organisée par oracle  s'est déroulée au mois d'octobre 2012  à San Francisco. Cette année l'invité d'honneur de la javaone était le javascript...

Nashorn.


Le rhinocéros est mort !  Oracle ne supportera plus le projet rhino qui permettait d'exécuter du javascript sur une JVM java.



Vive le rhinocéros teuton: Oracle a porté sur les fonts baptismaux le projet Nashorn (rhinocéros en allemand) . Ce projet reprend les grande lignes de Rhino. (sauf peut être les termes de la licence)



C'était aussi le nom d'un véhicule anti-char allemand de la 2eme gerre mondiale.

Quelle est la cible ? .
 Oracle a fait la part belle à HTML5  et javascript pendant sa kermesse.



Les conférences consacrées à Nashorn ont mis en vedette une librairie : node.jar (pas en opensource à ce jour)
Cette librairie permet de faire tourner un programme javascript destiné à Node.js sur une JVM.

JSON


Le JSON aura à présent une place d'honneur dans le langage Java.
Rappel : JSON = (JavaScript Object Notation)



D'autres éléments de la galaxie Java ont été évoqués :


  • Le langage SCALA.
  • La machine virtuelle JRuby pour le langage Ruby.


Concernant l'orientation Elastic Cloud de java, il faudra attendre la version 1.8 de l'an prochain.



Moi, j'étais déjà passé à Java 2 en 1998  (non pardon en java 1.2  ;-)) )
Cette ouvrage ne parlait du web qu'au travers des applets... , je dois bien être le plus vieux programmeur Java du quartier.




Ne parlons plus de javascript mais de Ecmascript c'est plus sur !


Les liens ici 
http://www.developpez.com/actu/48326/JavaOne-2012-Oracle-presente-la-specification-JSR-353-l-API-Java-pour-la-manipulation-avec-souplesse-du-format-JSON/

http://pragprog.com/magazines/2012-11/the-javaone-snooze

http://www.developpez.com/actu/48218/JavaOne-2012-Oracle-sort-la-Preview-de-NetBeans-7-3-et-devoile-Easel-une-extension-pour-la-creation-des-clients-RESTful-JavaScript/



vendredi 8 juin 2012

Index TIOBE :Java perd sa place de langage numéro 1 après 10 ans

L'index TIOBE est un baromètre des popularités des langages de programmation. Le classement  du mois de mai marquait un évènement : après 10 ans de règne sans partage, Java a cédé sa place au bon vieux langage 'C'.
Une page qui se tourne.


vendredi 13 janvier 2012

Comment PHP a sauvé le #web de #Free mobile





A l'annonce des offre Free , des centaines de milliers d'internaute se sont rués sur le site web de mobile.free.
Celui-ci s'est très vite trouvé saturé et en rupture de charge. Les petits curieux qui analysent les pages web et qui s'intéressent aux architectures web  avaient remarqué que les pages étaient délivrées par un framework JAVA/J2E  (présence des cookies avec des sessions typiques) . Lorsque le site a été de nouveau opérationnel, les cookies par magie relevaient du architecture PHP.
Un des moyens mis en oeuvre par les équipes Free pour augmenter les capacités d'accueil du site (scalabilité) à donc été de remplacer des parties entières de JAVA/J2E par du PHP.

Relevé sur les forums:


Cependant, nous avons pu remarquer encore quelques dysfonctionnement dans le processus d’inscription, et pour cause… Le site a semble t’il été entièrement réécrit dans la nuit !
Ce tour de force rendu semble t’il indispensable par l’incapacité à relever l’ancienne plateforme tournant sous Java, et qui désormais est en PHP.


 ----------------------------------------------------------------------------------------------------------
 (fin de citation)

Une application PHP sera nativement plus performante qu'une application JAVA/J2E pour les raisons suivantes:


  • Le serveur applicatif Apache (langage C) qui sert les pages PHP est plus fiable et puissant que n'importe quel Tomcat. La 'scalabilité' est plus facile à réaliser avec Apache/PHP qu'avec JAVA/J2E. Il est recommandé de placer un apache devant un ou plusieurs  tomcat pour cela (voir aussi le sujet des ressources non java:js,css) .
  • Une architecture PHP like est plus simple et coute moins cher.
  • Une application PHP utilise aussi la programmation objet mais sans ses dérives : des soit-disant experts on convaincu les crédules : la programmation objet doit forcement se traduire en plusieurs couches.  (voir des articles sur la notion de  principes SOLID)
  •  Les développeurs sont meilleurs en PHP

Avant les programmeurs PHP étaient considérés comme des amateurs. Maintenant la tendance s'inverse: Les meilleurs programmeurs se trouvent dans les communautés PHP, Ruby , Python , javascript et les C like.
 Peut importe le langage , l'essenciel est l'algorithmie.
Les entreprises pragmatiques preferent  utilser l'algorithmie  plutot que des dollars pour augmener les performances de leur site.
 Les plus gros sites WEB (facebook, twitter ) ont bien compris cette démarche.

Alors si au détour d'une réunion vous entendez quelqu'un qui explique doctement "que les applications JAVA/J2E sont plus robustes et plus scalables que les autres." , ne cherchez pas à argumenter, vous risquez de l'instruire.

Au commencement était le verbe ...  mais à la fin il y a toujours un developpeur qui se tape le boulot et qui sait ce qui est bon.


Pour le reste, Le grand architecte divin reconnaitra les siens.













samedi 23 avril 2011

JEE et la bouilloire

La chose la plus intelligente que j'ai lue sur l'énergie nucléaire est ici (suivre ce lien).
L'article titre sur :
Nucléaire : le moyen le plus dangereux pour faire bouillir de l’eau
Tribune de Bernard Laponche, publiée dans Libération le 24/03/2011

Je met en parallèle avec cet article le dernier numéro des Dossiers pour la science.



Lien vers la revue ici.

L'année 2012 sera riche en découverte scientifique grâce au satellite Plank. Et tout ce qu'on sait faire pour produire du courant est de faire tourner une turbine avec de la vapeur (technologie d'avant 1900). Quel gaspillage!.
La france est leader des constructeurs de centrales nucléaires MINITEL.

En faisant une analogie avec l'informatique.

J'ai commencé à faire du Java au début des années 2000, à l'époque des premiers APPLETS.
Puis j'ai enchainé sur les premiers frameworks : struts et spring.
J'ai arreté là, lassé de passer plus de temps à écrire des fichiers de configuration XML que du code.
Avec le recul, je crois que JEE est le moyen le plus complexe de répondre 'hello world' à une requete simple (comme GET /). JEE est bien une espèce de bouilloire.
Et je transpire en pensant que dans leurs bouilloires nucléaires à vapeur, c'est peut etre une autre bouilloire JEE qui supervise l'ensemble.
Le web n'est pas forcement la meilleure solution pour développer des applications métiers et JEE n'est pas la meilleure façon de faire des applications WEB.

dimanche 30 janvier 2011

Quel est le langage le plus adapté pour du script


Le site scriptometer qui compare les capacités de scripting des langages, classe en numero 1: sh et en 2 eme ruby ! (3 eme Perl , 5eme Python , 28 eme Java ...)

Ici en java un exemple de programme qui ne fait rien :
public class smallest { public static void main(String[] args) { } }

La même chose en ruby :'NEANT'

Lire les arguments de la ligne de commande :
En java
public class argv {
public static void main(String[] args) {
if (args.length > 0) System.out.println(args[0]);
}
}

En ruby
puts ARGV[0]
En python
import sys; print sys.argv[1]

samedi 9 octobre 2010

Après java ? Lava !


Alors que java devrait normalement s'intégrer dans les nuages (cloud) , c'est l'inverse qui se passe : des nuages sombres penetrent dans les cieux de Java.

La grand messe JavaOne qui est d'habitude l'occasion d'annoncer des nouvelles promesses technologies et des nouveaux Everest à gravir, etait placée sous le signe de la morosité cette année. RCLE a un peu foiré sur cet évènement. A tel point que les accros de java se posent des questions. Avec comme illustration le post suivant :
Is it time to fork Java? (il est temps de créer une nouvelle branche java)

L'auteur propose un nom 'lava' (la lave). Il a assité à la javaOne et il reparti avec le sentiment que dans un avenir porche , RCLE va faire en sorte d'avoir un JDK basique gratuit mais limité , et un JAVA/JDK optimisé destiné aux entreprises ou aux fabriquants de mobile. Cette version serait payante. Les menaces de développement d'un JDK et d'un java entièrement libre de droit , portés par une fondation (comme mozilla) sont les moyens les plus surs d'infléchir la tendance.

Toute cette agitation a fait dire à un des créateurs de java (James Gosling ) :The shit finally hits the fan.... (la merde a atteint le ventilateur) lire ici. Avec en prime des motifs pour des t-shirts


Le débat se poursuit sur des groupes de discussion google... http://groups.google.com/group/javaposse/browse_thread/thread/21b313a55ca4511e#
et sur http://sacha.labourey.com/2010/10/04/time-to-fork-java-si-vis-pacem-para-bellum/ (Si tu veux la paix prépare la guerre)

mercredi 6 octobre 2010

postgreSQL : de plus en plus fort

La CNAF a terminé ses migrations de base de données vers du Postgresql sur linux. Cela représente 168 bases pour 4 To de données. L'architecture répond à 1 milliard de transaction SQL / jour. Cette opération vient à la suite de celle de Méteo France qui possède des bases Postgresql de près de 3,5 To.

Pendant ce temps Oracle continue sa diversification et provoque des vagues dans toutes le communautés héritées de Sun , jugez plutôt:
* Mysql : le responsable du projet commence à forker (créer une nouvelle branche) vers une version libre du moteur de Mysql : Maria.
* Openoffice: La communauté a pris ses distances en créant une fondation : Libreoffice
* Java : quel sera le Java de demain ? Oracle se veut rassurant mais sans plus. Alors qu'il y avait qu'un Java, on pourrait voir émerger plusieurs déclinaisons de java avec leur propre machine virtuelle.
* Le socle Linux: oracle lance son socle propriétaire Linux
* Abandon du projet opensolaris


A signaler : le numero d'octobre 2010 (131) de linux magazine détaille la mise en place de la réplication Postgresql.

samedi 26 juin 2010

Vidéo humoristique sur Java avec "scala" Johanson

Une petite vidéo sympathique sur java, l'opensource et .NET

Pour certains la morale de cette vidéo se résume en :
beware of girls who talk about programming stuff like C++, Lisp, and Java. they take away your virginity.


Lien complet sur reddit.com


jeudi 3 juin 2010

Architecture java contre framework légers

Quand on voit la pile complète d'une application Java standard hébergée par un framework MVC, on peut à juste titre être tenté de qualifier ce montage d'usine à gaz ou encore mieux de Rube Goldberg machine.


(Détails )




Or il n'en est rien de tout ca. Chaque couche a sa justification. Un spécialiste JEE arriverait facilement à faire la démonstration du bien fondé de cet échafaudage : ET IL AURAIT RAISON. Le langage JAVA n'est pas pire qu'un autre : il reprend les lignes directrices du C++ à son compte.
Java et JEE mettent en pratique chacun à leur façon cette formule: diviser pour résoudre.
En java: diviser en objet pour résoudre le problème.
En JEE: diviser en couche pour assurer l'indépendance des parties clientes, web métier et données.
Avec un système comme ca, tout le monde trouve son compte:

Les vendeurs de serveur : ce n'est pas pour rien si c'est un fabriquant de serveur qui à eu l'idée de promouvoir ce modèle.

Les sociétés de service : une tel architecture justifie des ressources en nombre, des experts par couche. Cest aussi la certitude de trouver des developpeurs et de banaliser les ressources.

Les informaticiens: une filière reconnue, normée favorise la fluidité du marché du travail dans ce domaine. C'est un confort , une assurance pour un bon déroulement de carrière.

Les DSI: ils ont le sentiment de faire des choix 'raisonnables' , d'investir dans des techniques sures,pérennes et évolutives. Une filière technologique unique , étoffée par un ecosystème fort et couvrant tout le cycle de vie du logiciel.

Avec une telle armada, java aurait du être hégémonique vis à vis des autres langages.
Il n'y a rien de mieux que JEE pour réaliser de manière industrielle des applications métiers traditionnelles.

Alors pourquoi aller contre cette évidence ?.

Le principal reproche à l'ensemble Java/JEE est le coût global d'un projet. Une application est forcement 'lourde' en terme de ressources machines et humaines.

Les développeurs JAVA.

Dans la réalité les développeurs Java ne sont pas aussi interchangeables et banalisés que çà. Le cycle de formation d'un développeur Java est au moins deux fois plus long que celui d'une autre filière (6 mois PHP , 1 an pour le Cobol 2 ans pour le Java/JEE). Avec une remise à niveau tous les 3 ans. La tentation est alors grande de rogner sur le cursus de formation.
Un poste d'architecte applicatif est nécessaire avec un découpage en couche complexifié par le morcellement de l'approche objet. Or les personnes capables de maitriser toute la pile du système et l'architecture globale d'un projet sont très rares et donc chères .
Un investissement dans une équipe complète de développement Java/JEE ne se justifie vraiment que pour des industriels du logiciel. Quel est votre métier: fabriquer du logiciel ou fabriquer des voitures , vendre des aspirateurs ? .

Les applicatifs à produire.

Les applicatifs issus de cette filière se prête mal aux nouvelles contraintes :
Temps de réalisation court pour éviter l'effet tunnel.
Dans l'industrie automobile le temps entre la prise de décision de lancer un nouveau modèle et la sortie du véhicule des chaines doit être le plus court possible. Dans un projet informatique, cette contrainte est identique.
Les 'clients' élaborent des spécifications qui vont fixer les besoins à un instant donné. Hélas, ces besoins évoluent, les donneurs d'ordre vont avoir tendance à anticiper cette évolutions dans l'expression de leurs besoins . Seule une approche itérative avec un cycle court et une mise ne production rapide par 'morceaux' est capable de répondre correctement à ces besoins.

Explosion du volume de données.

L'idée de traiter massivement ses données par un seul serveur est obsolète. La parallélisation est devenue une nécessité. Dans ce mode de traitement, la communication inter-processus , le style de programmation et le traitement des erreurs sont stratégiques. Or Java n'est le langage le mieux adapté pour cela. Plutôt que de faire évoluer Java, les experts préfèrent redessiner un langage à partir de java et de sa très bonne JVM : le SCALA (utilisé par twitter) .

Passage au web 2.0


Pour l'avenir, les développeurs Java......script seront des ressources demandées. Avec javascript, les applications métiers en web surclassent les applications lourdes. Jquery, prototype ou script.aculo.us sont des librairies qu'il faut connaitre. Javascript, et un framework léger (Rails , symphony etc ) sont largement suffisants pour répondre aux besoins de nos utilisateurs.

Un jeune doit il se former à java ou basculer directement vers d'autres technologies ? . La bonne stratégie est de sortir des sentiers battus et de ne pas faire comme tout le monde. Pour une raison bien simple , il sera confronté un jour ou l'autre au java et sa culture alternative sera un plus. d'autant que l'approche MVC par un framework léger permet par la suite d'appréhender plus facilement des architectures complexes.

Demain il y aura trop de developpeurs Java, dans des pays divers et à des prix cassés. en revanche , les architecte-maquetteurs ( développement Agile) seront les rois du marché.

vendredi 23 avril 2010

Métaprogrammation et introspection en JAVA

La métaprogrammation au sein d'un langage pseudo-compilé ou comilié est très difficile et surtout d'une utilité limitée. En revanche l'introspection est un moyen pour approfondir ses connaissances d'un langage.

En java la classe : java.lang.reflect permet d'obtenir des informations intéressantes. Cette classe utilisée avec l'utilitaire 'javap' (livré avec le jdk) seront de bons compagnons de jeux:

Reflec liste les méthodes d'une classe , les attributs publics , les constructeurs et aussi la classe Mère.

Ici un exemple d'utilisation :



import java.lang.reflect.*;
abstract class mammifere {
public String nom;
mammifere(String s){
nom = s;
}


abstract void parle();
void quiSuisJe(){
System.out.println( "--------------------------" );
Object o = this.getClass();
String s = o.toString();
s = s.substring(6);
System.out.println( " Je suis un " + s );
}
void jeSaisFaire() {
Object o = this.getClass();
String s = o.toString();
s = s.substring(6);
try {
Class c = Class.forName(s);

Method m[] = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
{
System.out.println("je sais faire :" + m[i].toString());
}
}
catch (Throwable e) {
System.err.println(e);
}
}
void mesQualites() {
Object o = this.getClass();
String s = o.toString();
s = s.substring(6);
try {
Class c = Class.forName(s);

Field f[] = c.getFields();

for (int i = 0; i < f.length; i++)
{
System.out.println("Mes qualites sont :" + f[i].toString());
}
}
catch (Throwable e) {
System.err.println(e);
}
}

}
class Humain extends mammifere {
Humain( String s ){
super( s );
}
void parle(){
quiSuisJe();
System.out.println( "Bonjour je m'appelle " + nom +
" et je deteste la java !!" );
System.out.println("");
}
}

class Chien extends mammifere {
public String race ;
Chien( String s ){
super( s );
}
void parle(){
quiSuisJe();
System.out.println( "OUAF OUAF OUAF je m'appelle " + nom +
" et je ronge mon frein !! non !! mon os ..." );
System.out.println("");
}
void FaireLeBeau(){
System.out.println("sur deux pates");
}
}

class Chat extends mammifere {
Chat( String s ){
super( s );
}
void parle(){
quiSuisJe();
System.out.println( "MIAOUUUUUUUU je m'appelle " + nom +
" et je ronronne un max ..." );
System.out.println("");
}
}

class mam {
public static void main(String args[]){
mammifere mams[] = new mammifere[ 3 ];
mams[0] = new Humain( "Jean Valjean" );
mams[1] = new Chat( "O'Mallet" );
mams[2] = new Chien( "Droopy" );

for(int i=0; i<3; i++){
mams[ i ].parle();
mams[ i].jeSaisFaire();
mams[ i].mesQualites();

}
}
}

Avec des exemples de resultats.



je sais faire :void Chien.parle()
je sais faire :void Chien.FaireLeBeau()
Mes qualites sont :public java.lang.String Chien.race
Mes qualites sont :public java.lang.String mammifere.nom




La méthode GetMethods retourne les méthodes 'friendly' ,en revanche getFields ne fonctionne que sur les attributs explicitement publics.


Le programme javap est un décompilateur
Il s'utilise comme ceci :
javap <>


ex: javap Chien

Avec le résultat suivant:

javap Chien
Compiled from "mam.java"
class Chien extends mammifere{
Chien(java.lang.String);
void parle();
void FaireLeBeau();
}


Tout cela reste bien triste en raison de l'aspect statique de JAVA.


Ici un article complet sur le sujet.

jeudi 18 février 2010

Mixer #haskell #Erlang #Java dans #Ruby

Il est possible de s'amuser à faire interagir un programme Ruby avec d'autres langages.

Avec Haskell.
Le projet Hubris se veut un pont entre ruby et Haskell. Il s'utilise en mode inline ou sous forme d'appel de module.

require 'hubris' # best line ever

class Target
hubris :inline =>"triple::Int->Int; triple n = 3*n"
end

t = Target.new
puts t.triple(10)
=> 30
Un article sur http://www.engineyard.com/blog/2010/a-hint-of-hubris/ détaille son utilisation.

Avec Erlang.

Le projet erlectricity permet de communiquer avec un process Erlang.
Le projet présente un exemple d'un simple programme de type 'echo'


require 'rubygems'
require 'erlectricity'

receive do |f|
f.when([:echo, String]) do |text|
f.send!([:result, "You said: #{text}"])
f.receive_loop
end


end

Avec du C.
(tiré de rmag numero 5)
Il faut se munir des fichiers sources Ruby . Et construire un répertoire sous la forme:

rmag/
rmag.c # source code extconf.rb # ruby file to create makefile
example.rb # a simple script to show our ext
LICENSE # license
README # some info

Le rmag.c devra commencer par la ligne magique:

#include “ruby.h”

Le fichier responsable de la création du makefile contiendra:

require 'mkmf'
ext_name = 'Rmag'
create_makefile(ext_name)


Avec Java.

Il faut utiliser la machine virtuelle Jruby et inclure le module

# This is the 'magical Java require line'.
require 'java'

A partir de là il est possible d'écrire des lignes en java.

frame = javax.swing.JFrame.new("Window") # Creating a Java JFrame
label = javax.swing.JLabel.new("Hello")


exemples à prendre sur le wiki de jruby.

vendredi 6 novembre 2009

Plein de lien vers de la doc Java et Ruby on Rails

Etes vous :

JAVA ?
















OU BIEN
Ruby ?























Si vous été plutôt java le site objij est pour vous : plus de 100 tutoriels JAVA à votre disposition.

Si vous été Ruby on Rails ce site fera votre bonheur: il référence des liens vers de la documentation.


Moi j'ai choisi.