.
christophe.roux@webmiel.fr
Développeur et Testeur Java, formateur et support Chrome OS
Oracle est l'entreprise qui a repris le langage Java suite au naufrage de Sun Microsystems le créateur du langage.
Java était un langage magnifique du point de vue de son architecture.
Lorsque Oracle a publié Java 8, ses équipes ont introduit une évolution majeure des interfaces: les interfaces pouvaient implémenter une version par défaut des méthodes dont elles publiaient la signature.
Pour comprendre pourquoi il s'agit d'une erreur monumentale d'architecture logicielle, il faut comprendre ce qu'est une interface:
Une interface décrit un contrat logiciel que les classes qui implémentent cette interface doivent respecter. Une interface n'est pas sensée présenter un code exécutable mais uniquement les signatures (noms des méthodes et types des parametres ainsi que du type de retour) des méthodes.
A ce titre, une interface est l'élément du langage le plus représentatif de ce qu'est une API (Application Programming Interface).
Placer des implémentations par défaut dans une interface, pour prendre une analogie, c'est comme mettre une partie du moteur de la voiture sur le tableau de bord du véhicule, cela n'est pas du tout sa place.
Donc par cette simple évolution, Oracle a présenté au monde entier son incompétence pour reprendre la suite de Sun MicroSystems.
Si pour Oracle, le langage Java était si important stratégiquement, alors Oracle aurait mieux fait d'investir dans Sun Microsystems avant qu'il ne soit en mauvaise santé.
Oracle publie aujourd'hui, Java version 24. Openjdk 7 était en activité en 2007, nous sommes maintenant en 2025. Oracle a disposé de 18 ans pour acquérir la compétence afin de développer le langage Java. Force est de constater que cela n'a pas été suffisant.
La seule solution raisonable est de repartir de openjdk 7 et de reprendre le langage sans les erreurs de Oracle.
Même Google, qui a utilisé Java pour son système Android, a suivi Oracle et Java 8 avec ces évolutions des interfaces.
J'appelle donc toute entreprise qui n'a pas accepté de passer à Java 8 et désire continuer à utiliser des forks de openjdk 7 à me contacter.
Je désire aussi lancer un message à destination de Google.
Le "fair use" ou en français "l'usage légitime" peut s'appliquer aux interface de java 7 qui ne comportent pas d'implémentation. Mais à partir de Java 8, ce n'est plus le cas et donc utiliser les interfaces publiées par Oracle est dangereux car Oracle peut contester l'usage légitime du fait de ces portions de code implémentées dans ses interfaces. Je conseille donc à Google de ne plus suivre les évolutions faites par Oracle depuis Java 8 inclus car en cas de nouveau procès basé sur le fait que les interfaces ne sont plus de même nature, Oracle pourrait avoir gain de cause.
J'utilise quotidiennement ChromeOS de Google et je suis disposé à travailler avec Google ou Alphabet sur une évolution issue de Java 7 pour poursuivre le travail propre à l'architecture de Openjdk 7.
J'utilise Java depuis 1996 et j'apprécie la simplicité des concepts fondateurs de ce langage. Je n'ai pas nécessairement toutes les compétences requises pour y parvenir mais je compte sur l'aide d'autre développeurs pour y arriver.
Si vous lisez ces lignes jusqu'à ce paragraphe, c'est probablement parce que vous comprenez de quoi je parle et donc vous êtes compétents pour comprendre la suite de ce document.
Si vous êtes intéressés à participer à cette aventure en logiciels libres, n'hésitez pas à me contacter.
Vous avez un lien ci-dessous, qui vous conduira vers la page web qui détaille le plan de route que j'envisage pour ce projet.
De 2024 à aujourd'hui Webmiel
Scripting avec le langage Java
De 2016 à aujourd'hui Hagi-yaki
Association médico-sociale
Audits informatiques : identification de failles de sites officiels (UE, France Travail)
2015
Préparation au Marathon
2013-2014 école Centrale Paris
Paramétrage d'un logiciel pour réaliser un annuaire
2012-2013 AJI et JCM
Apprentissage de techniques administratives
2011 Afpa
Formation à la gestion pour la création d'entreprises
2009-2010 Eschel Formation
Formateur UML; modélisation SGBDR
2006-2008 Acœur
Développement Client/Serveur Java; Formateur Debian; auteur d'un livre sur l'architecture logicielle
2000 - 2006 Euriware
Développement Web en Java/Struts/JDBC; maintenance logicielle; Développement workflow pour MantisBugTracker; apprentissage de techniques d'Assurance Qualité
2000 Télémédecine Technologie
Conception orientée objet; principe d'inversion de contrôle
1997-1999 Avalon, Hexadev
Développement Client/Serveur en Perl et d'IHM en Java
1997 Nexos
Développement d'IHM en Java
1995-1996 Bintta
Développement d'une démonstration d'un logiciel de cartographie; analyse de code C++ par génie logiciel
1994 Jouve
Traduction en anglais de documentations techniques
1993-1994 Selisa
Développement d'IHM en C
1991-1992 Softeam
Développement d'IHM en C++
1990-1991 Bull
Développement d'un logiciel de cartographie
1988-1991
Ingénieur diplômé de l'INSA de Lyon, IHM
1986-1988
Classes préparatoires INSA Lyon
1986
Baccalauréat série C, mention assez-bien
Langues
Anglais et Espagnol courants, LSF (400 signes)
1990
TOEIC (Anglais) 740/990
Languages
C, C++, Java, Sml, Racket, Html, CSS
Sport
Bénévolat
course à pieds, Marathon
Président bénévole de l'Association Hagi-yaki
Visite aux malades en situation de handicap qui testent des logiciels
https://youtu.be/g6AxbT-jqqo cliquez sur ce lien ou sur le logo à gauche pour visionner la vidéo de démonstration
package com.ajeeig.autologic;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class AutoLogic {
public String qualityName = "smallness";
public String antiQualityName = "greatness";
public String s1 = "megabyte";
public String s1opt = "mega";
public String s2 = "epsilon";
public String word = null;
public boolean nOrMore = false;
public boolean quality = false;
public boolean property = false;
public boolean shortness = false;
public boolean smallness = false;
public int enne = 5;
public int stepFinish = 7;
public static void main(String[] args) {
AutoLogic al = new AutoLogic();
al.quiz();
System.out.println("Thank you for playing.");
}
boolean result(boolean exact) {
if (exact) {
System.out.println("Good!");
} else {
System.out.println("Bad!");
}
return exact;
}
boolean readAnswer() {
String s;
try {
BufferedReader in =
new BufferedReader(
new InputStreamReader(
System.in));
System.out.println("Please, provide an answer (y/n).");
s = in.readLine();
if (s.equals("y") ||
s.equals("Y") ||
s.equals("o") ||
s.equals("O")) {
System.out.println("You answered Yes.");
return true;
}
} catch (IOException e) {
}
return false;
}
boolean checkProperty(boolean value) {
if (nOrMore && value) {
return false;
}
return true;
}
void usage() {
System.out.println(
"Use keyboard keys \"y\" or \"n\" for choosing " +
"then <Enter>.");
}
public void quiz() {
boolean a = false;
boolean b = false;
int step = 0;
boolean swap = true;
boolean askAgain = false;
loop:
while (step <= stepFinish + 1) {
step++;
switch (step) {
case 1:
askAgain = false;
System.out.println("Choose a word from " +
"the following:");
if (swap) {
System.out.println(s1 + " (y)");
} else {
System.out.println(s1opt + " (y)");
}
System.out.println(s2 + " (n)");
break;
case 2:
if (word == null) {
step = 0;
System.out.println("You have to choose a word and " +
"it cannot be null.");
continue;
}
System.out.println("boolean a <== the word \"" + word +
"\" expresses the " +
qualityName + " (y) or the " +
antiQualityName + " (n)?");
break;
case 3:
System.out.println("boolean b <== the word \"" +
word + "\" is " + "short (y) or long (n)?");
break;
case 4:
if (a && b) {
System.out.println("Is the word \"" + word +
"\" autologic?");
break;
} else {
step++;
}
case 5:
if ((!a) && (!b)) {
System.out.println("Is the word \"" + word +
"\" autologic?");
break;
} else {
step++;
}
case 6:
if ((!a) && b) {
System.out.println("Is the word \"" + word +
"\" heterologic?");
break;
} else {
step++;
}
case 7:
if (a && (!b)) {
System.out.println("Is the word \"" + word +
"\" heterologic?");
break;
} else {
step++;
}
case 8:
default:
if (askAgain) {
step++;
break loop;
}
System.out.println("Do you want to try again?");
if (!askAgain) {
askAgain = true;
}
}
usage();
boolean answer = readAnswer();
switch (step) {
case 1:
if (answer) {
if (swap) {
word = s1;
} else {
word = s1opt;
}
} else {
word = s2;
}
quality = !answer;
nOrMore = (word.length() >= enne);
property = !nOrMore;
break;
case 2:
a = answer;
if (!result((a && quality) || ((!a) && (!quality)))) {
step = stepFinish;
}
break;
case 3:
b = answer;
if (!result((b && property) || ((!b) && (!property)))) {
step = stepFinish;
}
break;
case 4:
if (!result(answer == (quality && property))) {
step = stepFinish;
}
break;
case 5:
if (!result(answer == ((!quality) && (!property)))) {
step = stepFinish;
}
break;
case 6:
if (!result(answer == ((!quality) && property))) {
step = stepFinish;
}
break;
case 7:
if (!result(answer == (quality && (!property)))) {
step = stepFinish;
}
break;
case 8:
default:
if (answer) {
swap = !swap;
step = 0;
}
}
}
}
}
J'habite en région parisienne sur la commune de Fresnes dans le Val de Marne. Je dispose d'un véhicule et du permis B.
Si vous désirez me contacte, cliquez sur lien ci-dessous.
éditeur: Webmiel 6 avenue de la Libération 92 350 Le Plessis-Robinson France tel : +33(0) 649 53 25 29 Société en commandite simple SIREN : 931214126 RCS Nanterre Naf : 58.29C https://www.webmiel.fr christophe.roux@webmiel.fr
hébergeur: 1&1 Ionos Sarl 7 place de la Gare BP 70201 Sarreguemines Cedex
Webmiel
Christophe Roux
Développeur Logiciel
Copyright ©. Tous droits réservés.
Nous avons besoin de votre consentement pour charger les traductions
Nous utilisons un service tiers pour traduire le contenu du site web qui peut collecter des données sur votre activité. Veuillez consulter les détails dans la politique de confidentialité et accepter le service pour voir les traductions.