IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Història

Al 2009 Sun va ser comprat per Oracle.


Instal·lació

Instal·lació

http://www.wikihow.com/Install-Oracle-Java-on-Ubuntu-Linux

Mireu si teniu sistema de 32 bits o 64 bits:

$ file /sbin/init
/sbin/init: symbolic link to /lib/systemd/systemd
$ file /lib/systemd/systemd
/lib/systemd/systemd: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32,  BuildID[sha1]=8d8b7b5e681ec2cd7b572e2026bfcf5fce179e4e, stripped

Descarregueu de:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

El tar.gz jdk-8u121-linux-x64.tar.gz:

http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz?AuthParam=1488031093_194af9ba872505c6a427b9ac2b20741d

Ara:

$ cd /usr/share
$ sudo cp -r /home/sergi/Baixades/jdk-8u121-linux-x64.tar.gz .
$ sudo tar xvzf jdk-8u121-linux-x64.tar.gz
$ cd jdk1.8.0_121
$ pwd

Copieu el path en el meu cas:

/usr/share/jdk1.8.0_121

I ara executeu:

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/share/jdk1.8.0_121/bin/java" 1
$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/share/jdk1.8.0_121/bin/javac" 1
$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/share/jdk1.8.0_121/bin/javaws" 1

Executeu:

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config javaws

I seleccioneu opció que acabeu instal·lar. Comproveu la instal·lació amb:

$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

Ara comproveu la configuració de les variables d'entorn afegint als fitxers ~/.bashrc i ~/.zshrc

JAVA_HOME=/usr/share/jdk1.8.0_121
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH

Instal·lació 2

Podeu comprovar la versió d'Ubuntu amb:

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 9.10
Release:	9.10
Codename:	karmic

Ubuntu 12.04.03 i Oracle Java 7 o similars

Consulteu la versió d'Ubuntu que teniu:

$ lsb_release -a
LSB Version:	core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch
Distributor ID:	Ubuntu
Description:	Ubuntu 12.04.3 LTS
Release:	12.04
Codename:	precise

També la de Java:

$ java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

Consulteu si el vostre sistema és de 32 bits o 64 bits:

$ uname -m
x86_64

Si surt x86_64 és 64 bits si no és 32 bits.

Es necessita tenir el JDK i no pas només el JRE. Per instal·lar la última versió cal aanra a la web d'Oracle:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

i aneu a JDK:

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Accepteu la llicència i escolliu el tar de 64 bits o el de 32 segons us correspongui. En el nostre cas 64.

Aneu a la carpeta on s'ha descarregat, en el nostres cas Baixades, descomprimiu:

IMPORTANT: Modifiqueu les comandes i noms de carpetes al nom exacte de la versió de Java que us hagiu baixat

$ cd ~/Baixades
$ sudo tar xvzf jdk-7u40-linux-x64.tar.gz 
$ sudo mv jdk1.7.0_40 /usr/share

Ara configurem update-alternatives per tal de poder indicar que el nou Java instal·lat és el que volem que el sistema utilitzi per defecte:

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/share/jdk1.7.0_40/bin/java" 1
$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/share/jdk1.7.0_40/bin/javac" 1
$ sudo update-alternatives --install "/usr/lib/mozilla/plugins/libjavaplugin.so" "mozilla-javaplugin.so" "/usr/share/jdk1.7.0_40/jre/lib/amd64/libnpjp2.so" 1
$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/share/jdk1.7.0_40/bin/javaws" 1

Ara indiqueu la comanda java per defecte:

$ sudo update-alternatives --config java

Escolliu l'opció:

 2            /usr/share/jdk1.7.0_40/bin/java     1         modo manual

El mateix amb javaws:

$ sudo update-alternatives --config javaws

Amb javac no cal a no ser que tingueu més d'un JDK, executeu en cas de dubte:)

$ sudo update-alternatives --config javac

Comproveu:

$ java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
$ javac -version
javac 1.7.0_40

Ubuntu 12.04

Vegeu:

http://www.duinsoft.nl/packages.php?t=en

Editeu el fitxer /etc/apt/sources.list:

$ sudo joe /etc/apt/sources.list

Afegiu al final la línia:

deb http://www.duinsoft.nl/pkg debs all
$ sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 5CB26B26
$ sudo apt-get update && sudo apt-get install update-sun-jre

El JAVA_HOME és:

/opt/java/64/jre1.7.0_40

IMPORTANT: El següent m'ha deixat de funcionar (OBSOLET!):

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo mkdir -p /usr/lib/mozilla/plugins 
$ sudo apt-get install oracle-jdk7-installer 

Tornar a configurar:

$ sudo dpkg-reconfigure oracle-java7-installer

Per comprovar el plugin Java:

http://www.java.com/en/download/testjava.jsp

Recursos:

Ubuntu 11.10

Java Sun

$ sudo update-alternatives --config java
$ sudo update-alternatives --config mozilla-javaplugin.so

Ubuntu 10.10

Afegiu la línia:

deb http://archive.canonical.com/ maverick partner

Al fitxer /etc/apt/sources.list

$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

Assegureu-vos que utilitzeu la versió que toca:

$ sudo update-alternatives --config java

Ubuntu 10.4 (amb l'ordre add-apt-repository)

Afegiu una línia al fitxer de repositoris (/etc/apt/sources.list):

$ sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”

També ho podeu fer a mà.

Actualitzeu i instal·leu

$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

Automatitzar la instal·lació

Al instal·lar els paquets de Java ens apareix una finestra que ens mostra i ens fa aprovar la llicència. Aquesta finestra impedeix la automatització de la instal·lació. La sol·lució és utilitzar Preseed.

#!/bin/bash

#NOTA. Las Ubuntu versions doesn't have Java in restricted-extras

apt-get install -y debconf-utils

# create answer file
sudo debconf-set-selections <<\EOF
sun-java6-bin shared/accepted-sun-dlj-v1-1 boolean true
EOF

apt-get install -y sun-java6-jdk

Tipus de Java

Java Runtime Environment

És l'entorn bàsic per tal de poder executar aplicacions Java.

Java Development Kit

És l'entorn bàsic per poder desenvolupar aplicacions Java.

IMPORTANT: Si instal·leu el JDK no us caldrà instal·lar el entorn bàsic d'execució o JRE ja que està inclòs al JDK

NOTA: Possiblement s'utilitzaran eines més desenvolupades com IDEs com Eclipse o Netbeans però totes elles depenen del JDK

Instal·lació

Java per a usuaris

Afegir suport per a Java a Ubuntu

NOTA: Els següents passos són per instal·lar el suport per a Java a Ubuntu. Cal però tenir en compte que la majoria d'usuaris d'Ubuntu el que fan és instal·lar els Restricted formats que inclouen entre d'altres Java

Els usuaris que simplement volen executar aplicacions Java i no pas desenvolupar-les, aleshores necessiten el Java Runtime Environment o JRE. Hi ha diferents implementacions però la més madura és la de Sun/Oracle i es pot aconseguir instal·lant el paquet:

$ sudo apt-get sun-java6-jre

Si voleu el plugin per al navegador web cal instal·lar també:

$ sudo apt-get install sun-java6-plugin

Java per a desenvolupadors

Instal·lació manual

Actualment (--acacha 18:00, 3 abr 2010 (UTC)) la versió disponible del Java SE (o Java Development Kit) és:

JDK 6 Update 19

El podeu trobar a:

http://java.sun.com/javase/downloads/index.jsp

El fitxer que cal descarregar és:

http://cds-esd.sun.com/ESD6/JSCDL/jdk/6u19-b04/jdk-6u19-linux-i586.bin?AuthParam=1270317640_5c74be7993113fdc2496c615bf906ca8&TicketId=B%2Fw3kR2JSV5DSBVLOVVSnATg&GroupName=CDS&FilePath=/ESD6/JSCDL/jdk/6u19-b04/jdk-6u19-linux-i586.bin&File=jdk-6u19-linux-i586.bin

El nom del fitxer descarregat és.

jdk-6u19-linux-i586.bin&File=jdk-6u19-linux-i586.bin

NOTA: No intenteu baixar el fitxer directament amb eines com wget... La web de Sun/Oracle no ho permet. Us preguntarà per registra-vos peró us podeu saltar aquest pas

Suposem que heu utilitzat Firefox i us ha deixat la descarrega a la carpeta Baixades. Per instal·lar Java:

$ cd; cd Baixades
$ sudo chmod +x jdk-6u19-linux-i586.bin 
$ ./jdk-6u19-linux-i586.bin

Accepteu la llicència i se us descomprimirà una carpeta jdk1.6.0_19.

NOTA: Se us obrirà una finestra del navegador demanant un registre. No és obligatori.

Ara és convenient que moveu la carpeta a una carpeta més adient, per exemple seguint l'estàndard FHS:

$ sudo mv jdk1.6.0_19 /usr/lib/jvm

NOTA: És possible que tingueu més d'un Java instal·lat a la carpeta /usr/lib/jvm. Això no és problema si amb alternatives seleccioneu el que voleu utilitzar:

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.6.0_19/bin/java" 1

Ara executeu:

$ sudo update-alternatives --config java

I escolliu la versió que acabeu d'instal·lar.

Ara comproveu amb:

$ java -version
java version "1.6.0_19"
Java(TM) SE Runtime Environment (build 1.6.0_19-b04)
Java HotSpot(TM) Server VM (build 16.2-b04, mixed mode)

Recursos:

Debian/Ubuntu

A Debian/Ubuntu, Java és pot instal·lar directament dels [[Repositoris Ubuntu | repositoris]. Cal que tingueu activats el següents repositoris:

  • Debian: cal afegir els repositoris unstable/non-free.
  • Ubuntu: cal afegir el repositori multiverse (en les últimes versions d'Ubuntu aquest pas no cal fer-lo)

A l'hora d'instal·lar Java teniu dos opcions:

Si no desenvolupeu aplicacions tindreu prou amb JRE. Si sou desenvolupadors, o no teniou clar el que voleu fer i no us importa ocupar una mica més d'espai a disc, escolliu el SDK

Per instal·lar el JRE:

$ sudo apt-get install sun-java6-jre

Per instal·lar el JDK:

$ sudo apt-get install sun-java6-jdk

Si escriviu:

$ sudo apt-get install sun-java

i tabuleu dos cops...

$ sudo apt-get install sun-java
sun-java5-bin       sun-java5-jdk       sun-java5-src       sun-java6-fonts     sun-java6-plugin    sun-javadb-common   sun-javadb-javadoc
sun-java5-demo      sun-java5-jre       sun-java6-bin       sun-java6-javadb    sun-java6-source    sun-javadb-core     
sun-java5-doc       sun-java5-plugin    sun-java6-demo      sun-java6-jdk       sun-java6-src       sun-javadb-demo     
sun-java5-fonts     sun-java5-source    sun-java6-doc       sun-java6-jre       sun-javadb-client   sun-javadb-doc     

Us apareixeran totes els paquets relacionat amb Java de Sun que podeu instal·lar. Actualment (13/11/2008) als repositoris estan tant la versió 5 com la 6 de Java.

Per conèixer la versió exacte de java que heu instal·lat:

$ dpkg -L sun-java6-jdk | grep /usr/lib
 /usr/lib
/usr/lib/jvm
/usr/lib/jvm/java-6-sun-1.6.0.06
/usr/lib/jvm/java-6-sun-1.6.0.06/jre
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386 
...

Podeu veure que la versió en aquesta cas és:

java-6-sun-1.6.0.06

La versió dels repositoris no és sempre la última, però sovint és més que suficient.

Podeu comprovar que teniu Java instal·lat escrivint:

$ java
Usage: java [-options] class [args...]
          (to execute a class)
  or  java [-options] -jar jarfile [args...]
          (to execute a jar file)

where options include:
   -d32          use a 32-bit data model if available

   -d64          use a 64-bit data model if available
   -client	  to select the "client" VM
   -server	  to select the "server" VM
   -hotspot	  is a synonym for the "client" VM  [deprecated]
                 The default VM is client.
                 
   -cp <class search path of directories and zip/jar files>
   -classpath <class search path of directories and zip/jar files>
                 A : separated list of directories, JAR archives,
                 and ZIP archives to search for class files.
   -D<name>=<value>
                 set a system property
   -verbose[:class|gc|jni]
                 enable verbose output
   -version      print product version and exit
   -version:<value>
                 require the specified version to run
   -showversion  print product version and continue
   -jre-restrict-search | -jre-no-restrict-search
                 include/exclude user private JREs in the version search
   -? -help      print this help message
   -X            print help on non-standard options
   -ea[:<packagename>...|:<classname>]
   -enableassertions[:<packagename>...|:<classname>]
                 enable assertions
   -da[:<packagename>...|:<classname>]
   -disableassertions[:<packagename>...|:<classname>]
                 disable assertions
   -esa | -enablesystemassertions
                 enable system assertions
   -dsa | -disablesystemassertions
                 disable system assertions
   -agentlib:<libname>[=<options>]
                 load native agent library <libname>, e.g. -agentlib:hprof
                   see also, -agentlib:jdwp=help and -agentlib:hprof=help
   -agentpath:<pathname>[=<options>]
                 load native agent library by full pathname
   -javaagent:<jarpath>[=<options>]
                 load Java programming language agent, see java.lang.instrument
   -splash:<imagepath>
                 show splash screen with specified image
NOTA: Si a l'escriure java no us surt exactament el que apareix en aquesta pàgina, aleshores potser que tingueu instal·lada una altre màquina 
virtual de Java. Consulteu la secció Activar el Java de Sun com alternativa per defecte.

Activar el Java de Sun com alternativa per defecte

I per fer que el Java de Sun sigui el per defecte

$ sudo update-java-alternatives -s java-1.6.0-sun

I creem la variable JAVA_HOME

$ echo 'JAVA_HOME="/usr/lib/jvm/java-6-sun-1.6.0.06"' | sudo tee -a /etc/environment

Per fer que aquesta variable sigui vàlida a la terminal a la que estem treballant:

$ source /etc/environment

Per que la variable sigui aplicable a tota la sessió cal tornar a iniciar la sessió (Ctrl+Alt+Backspace).

Instal·lació de la documentació

Aneu a la pàgina de descàrregues de Sun:

http://java.sun.com/javase/downloads

I baixeu-vos 'Java SE 6 Documentation . Guardeu el fitxer a la carpeta /tmp.

Ara aneu a la carpeta tmp i busqueu el fitxer:

$ cd /tmp
$ ls -la jdk-6u10-docs.zip 
-r-------- 1 sergi sergi 58890428 2008-11-14 13:52 jdk-6u10-docs.zip

Cal modificar el nom i els permisos:

$ sudo chown root.root jdk-6u10-docs.zip 
$ sudo mv jdk-6u10-docs.zip jdk-6-doc.zip

Ara podeu instal·lar els paquets:

$ sudo apt-get install sun-java6-source sun-java6-doc

Els fitxers instal·lats són:

$ dpkg -L sun-java6-source
/.
/usr
/usr/share
/usr/share/doc
/usr/lib
/usr/lib/jvm
/usr/lib/jvm/java-6-sun-1.6.0.07
/usr/lib/jvm/java-6-sun-1.6.0.07/src.zip
/usr/share/doc/sun-java6-source

La documentació esta a :

/usr/lib/jvm/java-6-sun/docs

I el codi font esta comprimit en un fitxer anomenat src.zip. Podem descomprimir amb

$ /usr/share/doc/sun-java6-jdk
$ sudo mkdir src
$ sudo mv src.zip src
$ cd src/
$ sudo unzip src.zip 

I aleshores la carpeta de fitxers font està a:

/usr/lib/jvm/java-6-sun/src

Consultar la versió de Java que tenim disponible

Si hem instal·lat el suport d'Ubuntu com a paquet, podeu executar:

$ dpkg -l | grep sun
ii  splix                                      2.0.0-2ubuntu2                             Driver for Samsung's SPL2 (bw) and SPLc (col
ii  sun-java6-bin                              6-15-1                                     Sun Java(TM) Runtime Environment (JRE) 6 (ar
ii  sun-java6-jdk                              6-15-1                                     Sun Java(TM) Development Kit (JDK) 6
ii  sun-java6-jre                              6-15-1                                     Sun Java(TM) Runtime Environment (JRE) 6 (ar
ii  sun-java6-plugin                           6-15-1                                     The Java(TM) Plug-in, Java SE 6

En aquesta màquina hi ha instal·lat el entorn de desenvolupament de Java (JDK) que inclou el entorn d'execució bàsic JRE. També esta instal·lat el plugin de java per al navegador. Concretament tenim la versió de Java:

6-15-1

És a dir el update 15 de la versió 6 de java.

Quin java estem utilitzant?

Això depèn dels executables (ordres java javac, etc...) que estem utilitzant. Els podeu consultar amb:

$ whereis java
java: /usr/bin/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz
ls -la /usr/bin/java
lrwxrwxrwx 1 root root 22 2010-02-09 15:49 /usr/bin/java -> /etc/alternatives/java

Si us fixeu doncs estem utilitzant els alternatives que permeten gestionar quin és el programa per defecte que s'executa en accions habituals (per exemple quin és el editor per defecte del sistema). Podeu consultar quines són les alternatives (implementacions de Java diferents) que teniu disponibles amb:

$ sudo update-java-alternatives -l
java-6-sun 63 /usr/lib/jvm/java-6-sun

Si no tinguéssiu la implementació de Sun podrieu establir-la amb.

$ sudo update-java-alternatives -s java-6-sun

O podeu executar l'assistent:

$ sudo update-alternatives --config java 

També podeu utilitzar per a consultar la versió:

$ java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) Server VM (build 14.1-b02, mixed mode)

Recursos:

Configuració

Variable d'entorn JAVA_HOME

Primer heu de saber quin Java esteu utilitzant. Executeu:

$ sudo update-java-alternatives -l
java-6-sun 63 /usr/lib/jvm/java-6-sun

Segons l'exemple el JAVA_HOME és:

/usr/lib/jvm/java-6-sun

NOTA: L'ordre whereis no us dirà el path correcte per què només us mostrarà un enllaç simbòlic a alternatives. Consulteu Java_Sun#Quin_java_estem_utilitzant.3F

La podeu establir a nivell d'usuari o a nivell de sistema. A nivell de sistema cal modificar el fitxer /etc/bash.bashrc:

$ sudo joe /etc/bash.bashrc

Afegiu al final:

export JAVA_HOME=/usr/lib/jvm/java-6-sun

Per fer-ho a nivell d'usuari podríeu seguir els mateixos passos amb el fitxer:

~/.bashrc 

Si voleu establir JAVA_HOME per a tots els usuaris del sistema afegiu la línia:

JAVA_HOME=/usr/lib/jvm/java-6-sun

al fitxer /etc/environment.

Vegeu també:

Compilar. javac

Creeu el codi font:

$ sudo joe holamon.java

class HelloWorldApp {
   public static void main(String[] args) {
       System.out.println("Hello World!"); // Display the string.
   }
}

Compileu:

$ javac holamon.java

NOTA: Compte!: El nom de l'executable no vindrà determinat pel nom del fitxer si no pel nom de la classe!. El fitxer creat és HelloWorldApp.class

I l'executeu amb:

$ java HelloWorldApp

NOTA: Un error típic és executar: $java HelloWorldApp.class

Resolució de problemes

java.lang.UnsatisfiedLinkError

Aquest tipus d'error és dona quan falta una llibreria nativa. Per exemple al utilitzat applets de Java OpenGL (jogl) podem tenir el següent error

Exception in thread "main" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path:

A Eclipse se soluciona afegint el .jar corresponent (en aquest cas gluegen-rt.jar) al Java Build Path i especificant la localització de la llibreria nativa (Native Library Location). Feu botó dret al nom del projecte i seguiu el següent camí:

Java Build Path/Add External Jar/Doble clic al jar per estendre'l/fer clic a Native Library Location/ i afegir la carpeta on esta el .jar.

Recursos:

Consultar quina versió de Java tenim?

Podeu escriure:

$ java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) Server VM (build 14.1-b02, mixed mode)

JOGL

Buenas,

Como no me gusta mucho eso de bajarme cosas de internet teniendo paquetes de Debian, os pongo aquí un checklist que me ha servido para configurar el entorno bajo Debian Lenny. No es muy complicando mirando las instrucciones de instalación de la documentación, sólo que se tiene que adaptar un poco a cómo instala las cosas el gestor de paquetes:

# aptitude install sun-java6-jdk sun-java6-jre sun-java6-plugin

Con esto tendremos la VM y el entorno de ejecución (y el plugin para los navegadores, no tendremos que hacer nada más para activar java en los navegadores).


# aptitude install libjogl-java libjogl-jni

Instala los *.so y los *.jar correspondientes a los que salen en la documentación.

Apartir de aquí, tenemos que hacer los enlaces simbólicos de los ficheros de sistema a las localizaciones que pone en el documento de instalación del material (yo prefiero hacer enlaces simbólicos a copiar ficheros, pero funcionaría igual copiando):

# cd /usr/lib/jvm/java-6-sun/jre/lib/i386
# ln -s /usr/lib/jni/libjogl_awt.so .
# ln -s /usr/lib/jni/libjogl.so .
# ln -s /usr/lib/jni/libgluegen-rt.so .
# cd /usr/lib/jvm/java-6-sun/jre/lib/ext
# ln -s /usr/share/java/gluegen-rt.jar .
# ln -s /usr/share/java/jogl.jar .

Java y MySQL

Consulteu Java i MySQL

Desenvolupament en java

Consulteu Java development o Desenvolupament en java

Vegeu també

Recursos