Академический Документы
Профессиональный Документы
Культура Документы
FOR
Que
Java?
es
HACK
Lenguaje
de
programacin
presa
la
cual
ha
sido la promotora de este
nacido
desde
en
el
CRACK
1991
principio
su
padre
de
los
SUN
MICROSYSTEMS,
Em
tiempos.
Debido
al avance en las tecnologas de computadoras, versatilidad en los sistemas
y diferencias
entre
los
mismos
Dicha
empresa
desarrolla
un
cdigo
neutral
el
cual
pue
de
correr
en
diferentes
tipos
de
plataformas
sin
importar
la
maquina
y el
tipo
de
sistem
a
que
maneje,
corriendo
las
aplicaciones
en
una
maquina
virtual
JAVA
VIRTUAL
MACHINE, La
funcin
en
particular de esta JVM es convertir el cdigo java al formato i/o lenguaje correcto
de la maquina
anfitriona haciendo de este un lenguaje apreciado hoy da por muchos programadore
s gracias a
su multiplataforma.
Un
breve
repaso
A continuacin
algunas
caractersticas
erencia
entre
muchos lenguajes de programacin:
las
SIMPLICIDAD:
Que
sea
simple
no
quiere
decir
que
sea
menos
potente
que
otros
lenguaje
s
de
programacin no!
Solo
que
java
posee
las
funciones
de
un
lenguaje
potente
y robusto,
elimina
ndo
funciones
muy
poco
usadas
y confus
as
al
usuario.
DISTRIBUIDO:
En cuanto a su distribucin
manejo
de
libreras
que
este
(java)
libreras
para
el
manejo
exiones
aplica
al
incorpora
de
con
cuales
TCP/IP
y
a
acceder
y
funciones
hacen
de
java
protocolos
como
de
bases
que
encuentren
ordenadores remotos.
marcar
http
datos,
se
en
la
dif
ftp
par
ficheros
ROBUSTICIDAD
un
cdigo
objeto
el
cual
es
independi
Lo que lleva a java a ser un leng ente
uaje robusto
de la arquitectura de cualquier maquina,
directamente
es
su
proteccin el
fichero generado por un compilador de ja
al
programador
en
cuanto
a
event va
uales
actualmente
tiene
soporte
para
sistemas
errores
de
programacin,
verificando
Solaris, Linux, Windows, Mac, Apple Etc.
los
mismos en tiempo de compilacin com
o en
tiempo de ejecucin.
NEUTRALIDAD
Su
neutralidad
neracin
de
se
basa
en
la
ge
2
SEGURIDAD
El
cdigo
Java
pasa
muchos
tests
ant
es
de
ejecutarse
en
una
mquina.
El
cdigo
se
pasa
a travs
de
un
verificador
de
byte-
codes
que
comprueba
el
formato
de
los
fragmentos
de
cdigo
y aplica
un
prob
ador
de
teoremas
para
detectar
fragmentos
de
cdigo
ilegal
-cdigo
que
falsea
punteros,
viola
derechos
de
acceso
sobre
objetos
o
intenta cambiar el tipo o clase de un
objeto-
.
Si
los
byte-codes
pasan
la
verificacin
sin
generar
ningn
mensaje
de
error,
enton
ces
sabemos que:
El
cdigo
no
produce
desbordamiento
de
operandos
en
pilas
El
tipo
de
los
parmetros
de
todos
los
cdigos
de
operacin
son
conocidos
No
ha
ilegal
de
y correctos
ocurrido
ninguna
datos,
tal
conversin
como
converti
www.hackxcrack.es
enteros en punteros
El acceso a los campos
de
un
objeto
se
sabe
que
es
legal:
public,
pr
ivate,
protected
No
hay
ningn
intento
de
violar
las
reglas
de
acceso
y
seguri
dad
establecidas
tendremos
ms
tiempo
para
crear,
al
PORTABILIDAD
ser
La
portabilidad
va
desde
su
poder
java
un
lenguaje
interpretado
lo
hace
de
ms
ejecucin
en
mltiples
plataformas,
hasta
lento
que
otros
lenguajes
de
programa
facilitar
un
entorno
desarrollado
idntico
para
todos
los
usuarios
en
diversa cin
compilados
ya
que
este
(java)
debe
s
ser
maquinas.
interpretado
y no
compilado
ya
que
no
INTERPRETACION
cuenta
hasta
ahora
con
un
compila
Sistema
Run-Time
es
el
interprete
de
dor
java
encargado de la ejecucin del cdigo objeto propio para cada plataforma.
comnmente
el
interprete
consume
menos ORIENTADO A OBJETOS
tres paradigmas fundamentale
recursos que al compilar el code por lo q Soporta los
s
ue
para la orientacin a objetos:
nosotros
como
desarrolladores
java
Encapsulacin, herencia y polimorfismo.
ENTORNOS
DE
DESARROLLO
Existen diversos programas para el desarrollo de cdigo java estos son los muy p
opulares IDE
INTEGRATED DEVELOPMENT ENVIRONMENT la compaa SUN nos ofrece gratuitamente
el kit
para poder desarrollar java JDK JAVA DEVELOPMENT KIT dotado de una serie d
e libreras y
programas
para
desarrollar,
compilar
y ejecutar
en
java
y los
IDE
anteriormente
mencionados
como
siempre
lo
he
dicho
nos
facilitan
la
vida
=)
en
un
mismo
program
a
podrs
ejecutar
y
compilar en java.
Actualmente hay muchos
os:
NETBEANS
ECLIPSE
JDEVELOPER
JBUILDER
VISUAL J++
IDE
disponibles
para
java
entre
EMPECEMOS:
Primero
que
COMPILAR
todo
nos
EJECUTAR
Instalamos
de
Instalado
JDK
Procedemos
tenemos,
www.hackxcrack.es
TU
PRIMER
JDK(Java
PROGRAMA
Development
http://www.4shared.com/file/MkCwFiMb/jdk-6u20-windows-i586.html
Despus
muchos
su
configuracin
Kit)
EN
JAVA
Descarga
entre
otr
Nos Ubicamos en el directorio donde este se instala Por defecto es (C:\Archivos de Progra
ma\Java) tal vez
tengas otras versiones instaladas seleccionas la ms reciente que tengas instalada lo ms
probable es que
sea la que acabamos de instalar xDD bue.. Abrimos la carpeta bin y copiamos la ruta
Ejemplo:
C:\Program Files\Java\jdk1.6.0_20\bin
Configuramos
el
PATH
Nos
Ubicamos
en
MI
PC damos
Clic
derecho
seleccionamos
propiedades, picamos
en
la
pestaa
Opciones avanzadas, luego en variables de entorno, Seleccionar Path y pincha en modificar,
en los valores
si la cadena no termina con Punto y coma ; se lo pones y a continuacin pegas
la ruta que copiaste que
hace referencia a los binarios de JAVA, Cerramos la cadena con punto y coma ; Clic en O
Y funciones
de
K y Aceptar
Creo
JAVA
que no est de ms decir que no tienes que borrar nada =D
Una
Imagen..
Abrimos
la
Inicio
Tecla
Windows
Hacemos
Ejecutar..
una
Tipeamos
escala
de
CMD
Tipeamos
directorios
negra..
Enter
CMD
Enter
hasta
llegar
al
Directorio
Raz
C:\
www.hackxcrack.es
esta
manera
configurado
tendremos
nuestro
correctamente
no
componentes
Para
nuestro
Uso
;D
Con
esto
podemos
con
plena
certeza
compilar y Ejecutar programas
Escritos
en
JAVA, Co
mo
primera
medida
compilemos
nuestro
primer
programa,
Al
Igual
que
en
muchas
ocasiones
nos
lanzaremos
al
estrellato programando el popular HOLA MUNDO
www.hackxcrack.es
PROGRAMANDO
Y COMPILANDO
MA
EN JAVA HOLA MUNDO
NUESTRO
PRIMER
Conceptos
antes
iniciar:
QUE
CLASE?
ES
UNA
tener
QUE
ES
UN
MTODO?
en
cuenta
plantillasobre
el
mismo
la
nombre
cual
del
de
trabajaremos
estas
archivo
.java
pueden
PROGRA
contener
variables
Un mtodo JAVA es un Bloque de cdigo que se le asigna un nombre para ser llamado
luego en cualquier
evento del programa.
Listo despus seguimos con ms conceptos
Empezamos a programar en JAVA nada mas basta con abrir un editor de texto y que
mejor opcin que el
tradicional, viejo, muy conocido, estupendo y poderoso notepad block de notas, Que pensa
bas que el
notepad solo serva para hacer bats y autoruns Bue..
Ya con nuestro blog de notas abier
to tiramos code
JAVA!
Para
este
ejemplo
Crearemos
una
Carpeta
en
C:\
yo
la
llame
hola
mundo
sea
que
este
ejercicio
lo
guardare en C:\hola mundo\ y le pondr como nombre main.java
haber si le pones
otro nombre he?
sea
Listo
hemos
Abrimos
La
creado
Shell
nos
Para
compilar
javac
Para
ejecutar
java
Cabe
Recalcar
de
cualquier
directoro en el
el
JAVA
ubicamos
en
[nombre
que
estos
estemos
que
tipo
archivo
[nombre
que
como
es
Buscamos
diferente
nuestra
Variable1
ruta
de
archivo
seleccionamos
la
carpeta
donde
todos
guardamos
C:\hola
los
el
Que
el
nom
minscul
variable1
mundo\
ya
sabe
ejecutar
des
archivos
archivo
archivo].java
archivo]
comandos
de
ubicados
en
ejecucin
la
consola,
compilacin
solo
en
el
se
puden
directorio
www.hackxcrack.es
raiz
Tal Vez
:S ?
Listo
si
nunca
has
programado
en
java
te
preguntaras
Por
Dios
Que
esto
muchos
hemos
terminado
el
cdigo
primer
programa
en
java
de
nuestras
ser
vidas
accesible
si..
Si..
Vendrn
ms..
Como
por
ejemplo
hagamos
programacin
Sumemos 2 nmeros! =D
Pero
este
explicare..
Al declarar
public class main
{
Si sabemos un poco de ingles Estamos declarando una clase pblica sea que esta clase puede
desde otras clases
Aqu estamos programando el cuerpo de nuestra clase y
las funciones del programa
public static void main(String[] args)
{
Con esta Instruccin Mostramos Un mensaje en pantalla, en este caso **** Hola Mundo****
System.out.println("Hola Mundo");
Y por ultimo cerramos
}
}
Con
es
primero
lo
primero
otro
programa
tpico
al
iniciar
en
cualquier
lenguaje
de
VARIABLES:
Con el fin de retener y poder utilizar tanto los datos inciales como los resultad
os de operaciones
efectuadas
durante
la
ejecucin
de
un
programa
se
requiere
la
utilizacin
d
e
variables,
que
representan
un
lugar
de
almacenamiento,
cuyo
contenido
podr
variar
durante
el
proceso
de
ejecucin del programa.
Variables
de
tipo
Enteras:
de
tipo
decimal
500
los
nmeros
enteros
positivos
www.hackxcrack.es
una
secuencia
Variables
de
tipo
Switch
Falso
Verdadero
Encontramos
tratados
posteridad
otros
tipos
de
datos
tipo
primitivos
BOOLEAN,
como
son
char,
valores
long,
byte
lgicos,
que
ser
con
por
ahora
trabajaremos
con
estos
tipos
de
datos;
IDENTIFICADORES:
Un
identificador
del
un
nombre
estn
regidos
que
otorgamos
una
variable
para
diferenciarla
dentro
programa,
dichos
es
identificadores
por
algunas
reglas
expuestas
por
el
lenguaje
estas
son:
Incorrecto:
Correcto:
1nombre
Cuenta
Variable1
Saldo2
NOTAFINAL
new
nueva#
blanco
COMENTARIOS:
Los
Comentarios
nal
del
son
textos
que
generalmente
se
Comentarios
colocar
los
En
Java
comentarios
comentario
tienen
para
para
la
explicar
boludear
siguiente
lneas
nomas
en
la
cabecera
al
fi
//
Hola
Soy
programa
Un
Comentario
en
Java
de
cdigo
guiarse
en
program
=)
estructura.
/*
hacen
programa,
tambin se suelen
as extensos por
lo menos yo uso
Los
los
www.hackxcrack.es
Mi
Presencia
aqu
no
afecta
en
lo
mas
mnimo
Hola
De
Soy
Varias
Un
Comentario
Lineas
en
Java
=D
*/
Bien
public
ahora
class
teniendo
unos
cuantos
conceptos
bsicos
tiramos
el
code:
suma{
args)
es"+suma);
Explicacion
Bien Compilamos como ya sabemos =) y tendremos como resultado 40 en este ejercicio ve
mos la manera
de declarar variables asignadas como num1 que es un entero con valor de 20 y la vari
able suma que es un
entero
que
no
le
asignamos
valores
ya
que
el
valor
de
este
vendr
de
la
sum
a
de
num1
+ num2,
nos
topamos tambin con
instruccin:
System.out.println(El resultado es+suma);
Si..si..
ya
se
es
para
mostrar
un
mensaje
en
pantalla
y tambin
resultados
obtenido
s
en
operaciones
realizadas dentro del programa.
Muy Bien!
As es.. ;D
Pero
No
quiero
Muy Bien En
asignarlos a
variables para
el
Asignar
los
Siguiente
luego
Nmeros
Ejercicio
realizar
quiero
veremos
operaciones
Digitarlos
como
Yo
capturar
Mismo!!
datos
:S
digitados
pertinentes.
import java.util.Scanner;
public class sumaj{
public static void main(String Args[]){
int num1;
int num2;
int suma;
Scanner reader = new Scanner(System.in);
System.out.print
("Digite
primer
num1 = reader.nextInt();
System.out.print ("Digite segundo
num2 = reader.nextInt();
numero:");
numero:");
www.hackxcrack.es
desde
el
teclado,
suma = num1+num2;
System.out.println("El resultado
}
}
es:"+suma);
Nos
topamos
que
hemos
usado
la
instruccin
import
con
la
que..
si
si..
impor
tamos
la
librera
java.util.Scanner
para poder recuperar en nuestras variables los datos digitados en la conso
la .D
Mediante
num1 = reader.nextInt();
de resto igual una vez tenemos los datos realizam
os operaciones y
mostramos
resultados
en
el
transcurso
de
la
programacin
en
java
podrs
darte
cue
nta
que
debers
importar algunas libreras para poder utilizar ciertas funciones y controlar eventos.
INSTRUCCIONES
DE
CONDICION
Estas
Instrucciones
evalan
la
exacto
te
estoy
hablando del muy conocido SI
gramacin ya que es
una instruccin muy poderosa.
sintaxis
if
veracidad
el
cual
en
cuanto
abunda
en
a
la
eventos
mayora
dados
de
en
los
el
programa,
lenguajes
de
pro
[Condicin] {
[sentencias 1]
}
else
{
[sentencias 2]
}
Un ejemplo: Deseamos llevar a
solo mayores de 18
Tendramos que saber la edad
evaluamos si estas son
mayores Explicacin
a 18 con un
del si.cd
Comenzamos.
igo:
juan,
de
los
10
SOLUCION:
import java.util.Scanner;
public class van{
carlos
3
y
no?
miguel
Listo
Pedimos
una
Disco
pero
la
edad
de
www.hackxcrack.es
solo
cada
admiten
uno
}
else
{
System.out.println("CARLOS
pedimos
datos,
pero
con
la
particularidad
que
evaluamos
los
if:
PUEDE
NO
los
ENTRAR
PUEDE
ENTRAR
LA
DISCO
LA
YA
DISCO
QUE
YA
TIENE"+edaddecarlos);
QUE
TIENE"+edaddecarlos);
}
Si edaddecarlos es mayor o igual ( >= ) a 18 escriba
O
Si no es as: CARLOS NO PUEDE ENTRAR A LA DISCO
Fcil verdad?
11
IMAGEN
DEL
EJERCICIO
ANTERIOR
CARLOS
PUEDE
ENTRAR
www.hackxcrack.es
LA
DISC
INSTRUCCIONES
DE
REPETICION
CICLO
FOR
Un
Poco
mas
de
Teoria..
es
bueno
por
que
muchos
Programadores
solo
conocen
el
nombre
de
las
funciones, no se muchas veces usan instrucciones en un lenguaje por inercia bue.. Sigam
os..
El
Bucle
FOR
es
una
estructura
de
de
programacin..
Ofrecindole al programador la posibilidad
accin
Sintaxis
for variable1 variable2
Instrucciones
}
Stop!!!
Antes
de
control
de
definir
tirar
el
code
Veamos
disponible
los
en
cuantas
casi
veces
de variable4
todos
desea
los
generar
lenguajes
determinada
operadores
de
relacin:
OPERADORES DE RELACION
Operador
Nombre
=
Igual
<
Menor
>
Mayor
<=
Menor O Igual
>=
Mayor O igual
!=
Diferente
Mralos
Bien
Que
sern
Un
Ejemplo:
Hacer
un
entrada
la
tabla
que
deseamos revisar.
import
public
vuestros
Nuevos
programa
que
aliados
genere
de
las
ahora
en
tablas
adelante
de
=D
multiplicar,
java.util.Scanner;
class
tabla{
12
www.hackxcrack.es
Pidiendo
de
Como
vemos
pedimos
el
numero
de
la
tabla
que
deseamos
ver
y mediante
el
ciclo
for
iniciamos
la
variable
variable1 en un valor de 1 e incrementndola hasta que sea menor a 11
luego mostramos la
salida por pantalla con un mensaje
en el cual tambin lleva la operacin de multiplicaci
n.
INSTRUCCIN
DE
REPETICION
CICLO
WHILE
Mientas
QUE
cdigo,
su
Sintaxis
While
(Condicin)
{
Instrucciones..
}
Sale Ejemplo...
Hacer Un programa
que
/*PROMEDIO DE NOTAS
*UTILIZANDO CICLO WHILE
*/
import java.util.Scanner;
pida
EN
el
JAVA
nmero
de
"Recuerda
notas
Soy
Un
trabajar
Comentario
13
public
class
promedio_de_notas
las
=D"
www.hackxcrack.es
promedie.
funcin
es
nn=reader.nextInt();
while(tope<=nn) //Mientras que Tope Sea Menor Igual a nn Pidamos Notas
{
System.out.println("Digita Una Nota");
n=reader.nextFloat();
tope=tope+1; //Incrementamos el valor de la variable tope para controlar el ciclo
notas=notas+n; //Vamos Recolectando el Valor de las Notas Que Digitamos y las
}//cerramos el ciclo
System.out.println("El Promedio de Notas es:"+(notas/nn)); // Mostramos Resultados
}
}
IMAGEN
DEL
EJERCICIO
sumamos
ANTERIOR
Aqu Terminamos Con Java En modo consola ahora pasamos a un entorno de trabajo muc
ho ms amigable
y cmodo el cual nos facilitara mucho nuestro trabajo NETBEANS Hay muchos IDE Lo s
pero para m
uno de los ms completos y robustos es NETBEANS de la misma compaa de java, SUN qu
e actualmente
cursa en su versin 7 =)
Podemos Acceder a la descargar Aca: http://netbeans.org/community/releases/70/
En
la
parte
de
arriba
explique
lo
que
era
un
IDE
pero
tal
vez
te
ests
preg
untando
ser
que
el
IDE
programara por mi? Aja como acabas de decir que me facilitara el trabajo.. :$
14
www.hackxcrack.es
Exacto! Que las cosas es mejor hacerlas uno mismo que a que
pero sabemos que este
campo de la programacin se mueve muy rpidamente y debemos
r proyectos para
vender y obtener ms clientes as que el espabila pierde!! .
ECHANDO
NUESTRO
PRIMER
VISTAZO
AL
otro
estar
te
a
las
de
echas
la
par
saca
IDE =)
Como Vemos es un entorno grafico pero tambin podemos realizar programas por consola c
omo los que
venamos realizando, ya no tenemos que abrir la consola y teclear java
[nombre_programa]
solo damos
ejecutar y listo jeje ya te diste cuenta de lo que pasa cuando le das al botn ejecutar
no? xD
Tambin
e texto
muchos
Inspector
muestra
,
se
ansioso
Como
File
primera medida
New Proyect
Elegimos
Java
vamos
Application
como
crear
en
la
15
un
proyecto
siguiente
imagen
.)
www.hackxcrack.es
Next
>>
Ponemos el nombre del
yecto de ejemplo
Veamos que tanto vuela
proyecto
tu
es
el
nombre
imaginacin :D
que
quieras
man
yo
le
puse
mi
pro
Y finish
=O se crearon
el paquete y la clase
(H), Exacto se crean solitos y como lo que v
amos a trabajar es entorno
grafico crearemos un formulario para empezar a realizar tareas sencillas, cabe decir que nue
stra finalidad
es llegar a realizar un proyecto con conexiones a bases de datos =) pero para llegar h
aya tendremos que
practicar algunas cosillas bsicas, Paciencia Virtud de Sabios
que
eres
impaciente
quieres
Sobre
ejecutar
el
nuestro
formulario
16
Ejecutas
con
Shift
+ F6 o te
vas
archivo
que
quieres
ejecutar y escoges run file
Y Lo Ejecutaste.. =D
Bueno un gran programador
Es una persona inquieta
Que le gusta experimentar
Hasta las cosas ms sencillas
De las cuales aprende mucho ms
Creando
El
Primer
Entorno
Grafico
Paquete
as
en
new
blanco
jframeform
www.hackxcrack.es
al
de
Explorador de
lo
Con
que
imagina
Controles
proyectos
clic
derecho
sobre
el
de
las
buscamos
que
arrastrar
jtextFieds
cajas
la
de
JLabels
texto
propiedad
controles
de
del
text
la
paleta
un
JButton
botn
solo
de
selecciona
modificamos.
17
del
JtextFiel1
en
"a"
www.hackxcrack.es
b=
jTextField2.getText();
// Capturamos Los Valores del JtextFiel2 en "b"
c = Double.parseDouble(a);
//Conversion de Texto a Double
d = Double.parseDouble(b);
//Conversion de Texto a Double
e = c + d; //Ya podemos sumar normalmente
jTextField3.setText(String.valueOf(e)); //Mostramos Valores en el JTextFiel3
JOptionPane.showMessageDialog(this,
".::Listo!!::.",
"Suma
Realizada
Corectamente",
JOptionPane.INFORMATION_MESSAGE);
//Listo!
TIPOS
DE
MENSAJES
El code siempre
os de mensajes
ejemplos:
ser
CON
el
JOPTIONPANE
mismo
Mensaje
lo
nico
de
que
muchas
veces
debemos
de
MENSAJE::.",
de
".:TEXTO
MENSAJE::.",
son
algunos
ejemplos,
solo
es
MENSAJE::.",
sea
de
"TITULI
MONSAJE",
MENSAJE::.",
informacin
MONSAJE",
o
de
18
PROPUESTOS
"TITULI
"TITULI
colocar
JOptionPane.showMessageDialog(this,
".:TEXTO
las
opciones para el manejo de mensajes ya
les.
EJERCICIOS
NTES
"TITULI
Advertencia
JOptionPane.showMessageDialog(this,
".:TEXTO
MONSAJE", JOptionPane.CANCEL_OPTION);
Estos
tip
Pregunta
JOptionPane.showMessageDialog(this,
JOptionPane.QUESTION_MESSAGE);
Mensaje
diferentes
Error
JOptionPane.showMessageDialog(this,
".:TEXTO
MONSAJE", JOptionPane.ERROR_MESSAGE);
Mensaje
mostrar
JOptionPane. Y
solicitud
de
datos
saldrn
muy
todas
configurab
www.hackxcrack.es
PARA
PRACTICAR
FUNCIONES
seleccin
de
DE
opciones
ALGUNOS
un
COMPONE
ejemplo:
haga
alguna
seleccionado
Accin Pertinente
en este caso s
consigo
puesto
el
nombre
equivalente
su
deresultado
}
if (restar.isSelected())
n1 =
n2 =
Double numero1,numero2,resultado;
jTextField1.getText();
jTextField2.getText();
numero1 = Double.parseDouble(n1);
numero2 = Double.parseDouble(n2);
resultado = numero1 - numero2;
jTextField3.setText(String.valueOf(resultado));
}
if (multiplicar.isSelected())
{
Double numero1,numero2,resultado;
n1 = jTextField1.getText();
n2 = jTextField2.getText();
numero1 = Double.parseDouble(n1);
19
numero2
Double.parseDouble(n2);
Double numero1,numero2,resultado;
n1 = jTextField1.getText();
n2 = jTextField2.getText();
numero1 = Double.parseDouble(n1);
numero2 = Double.parseDouble(n2);
resultado = numero1 / numero2;
jTextField3.setText(String.valueOf(resultado));
}
}
COMPONENTE
ESTUDIAR
JCOMBOBOX
www.hackxcrack.es
funcin.
EJERCICIO
PROPUESTO:
al
seleccionar
algn
tem
un
JLabel
diga
que
String var; //Declaramos una variable string para guardar el dato del JCombobox
var=((String) jComboBox1.getSelectedItem()); //Asignamos el valor seleccionado a la
if
if
la
variable
tem
variable
var
}
EL
ITEM
NUMERO
DOS");
}
if
}
if
}
if
EL
ITEM
NUMERO
TRES");
EL
ITEM
NUMERO
CUATRO");
EL
ITEM
NUMERO
CINCO");
20
COMPONENTE
ESTUDIAR
www.hackxcrack.es
JTEXTFIELD
EJERCICIO
PROPUESTO
Digitar
eld y
valor Cualquiera
un JLabel
un
en
en
un
JTextField
clic
en
el
boton
OK
mostrar
es
el
este
paquete
en
de
un
tu
Mensaje
proyecto
en
otro
JtextFi
en
la
"Texto
mayori
asteriscos
****
EJERCICIO PROPUESTO
Bien
para
el
ejemplo
haremos
un
formulario
login
muy
sencillo
se
pedira
para
el
acceso
a
a
aplicacin nombre de usuario y password
de
usuario
colocare
Administrator
y
colocare 12345678910 HUM.. que colocas
he? Bien empezamos!
21
Diseamos
un
Formulario
mpos
clic
derecho
sobre
el
jTextField
donde
pidamos
haber
pass
vos
www.hackxcrack.es
user
pass.
Cambiemos
los
nombres
de
los
boton
la
Acceder
librera
damos
joptionpane
doble
clic
xDD
pass.equals("12345678910"))
sobre
ca
JOptionPane.showMessageDialog(this,
".::Bienvenido
la
Aplicacion!::.",
"Acceso
Correcto",
JOptionPane.INFORMATION_MESSAGE);
//verificamos si estos equivalen a nuestro login user Administrator y pass 12345678
910
mi_proyecto_de_ejemplo.principal principal= new mi_proyecto_de_ejemplo.p
rincipal();
principal.show();
//De ser cierto Mostramos el formulario principal
setVisible(false);
//y ocultamos el login
} else {
// de ser erroneo nuestros datos digitados mostramos un error de acceso
JOptionPane.showMessageDialog(this, "Usuario
o Contrasea
Incorrectos
Verifica", "Error
de
Acceso", JOptionPane.ERROR_MESSAGE);
//y
user.setText(null);
pwd.setText(null);
limpiamos los
campos
para
un
nuevo
intento
}
IMAGEN
DEL
EJERCICIO
ANTERIOR
22
www.hackxcrack.es
formulario
como
vez
enseguida
se
situa
en
la
parte
sup
Armando el
ARCHIVO
Opcion 1
Opcion 2
Opcion 3
Salir
menu
asi..
ACERCA DE..
hacerca de hack x crack
Al
picar
en
opcion1
abriremos
un
formulario
2,3
y tambien
en
el
menu acerca de..
Clic derecho sobre el primer item edit text
en el otro pones
Acerca de..
Ahora
agregamos
Agregamos
las
los
items
opciones
de
cada
la
menu
opcion
Si
eres
Buen
observador
puedes
dar
los
items
shortcut
osea
asignarle una tecla de acceso rapido y
=)
23
de
clic
puede
para
acerca
icono
de..
que
solo
en
modificar
derecho
cuenta
un
ser
add
blanco
el
from
deberiamos
os
es
da
la
darle
texto
palette
ir
asi
pones
con
opcion
Archivo
menu
item
asi..
opcion
doble
www.hackxcrack.es
clic
de
y
colocarle
configurarla
ASIGNANDO
Ubiquemos
FUNCIONES
Opcion
CADA
ITEM
del
menu
archivo
demos
clic
derecho
eventsactionactionPerformed
en
muchas
formulario
ocaciones
mediante
un
Expandemos
el
jpanel de
tal
manera
que
cubra
todo
el
formulario
y
propiedades..
no
se
olvide que se encuentra en la parte derecha del programa escojes border.
24
www.hackxcrack.es
yo
los
jpanel
nos
bamos
Aqu
en
seleccionas
tu Pc
Clic en OK
En mi caso
Matte
Border
y listo habremos
me quedo asi.
luego
puesto
clic
una
en
icon
imagen
seleccionas
de
fondo
al
external
image
para
buscarla
programa
Bien si has llegado hasta aqu quiere decir que tienes muchos conseptos basicos en prog
ramacion java y
del manejo del IDE NETBEANS, ahora haremos la tan anhelada conexin a BASE DE DATO
S para el primer
paso en las conexiones, utilizaremos como Motor de Base de Datos Microsoft Access, Qui
zas si has leido
sobre access muchos no lo catalogan como un verdadero motor y gestor de bases de d
atos opinion que
comparto con el que lo dice ;) pero sera el primer escalon a subir.
Pero me dices que no es catalogado como un verdadero motor de bases de datos :$
por que no hacemos
una conexin con un verdadero motor de bases de datos?
Paciencia.. decierto os digo que al terminar la conexin con access realizaremos una con
MYSQL =)
No pongas esa cara ningun conocimiento esta de mas tal vez algun dia necesites una b
asesita de datos en
access
para
algun
programa
pequeo..
o bien
utilizar
tablas
temporales en
access
vez..
de
algo
puede
servir :D
Pero ten en cuenta las palabras de un profesor que tuve DESPUES QUE LA EMPRESA
TENGA UN AVISO
DE MAS DE 4 METROS DE ANCHO YA ACCESS NO LE SIRVE COMO MOTOR DE BASE DE
DATOS XD
Sin
mas
ni
CONECTANDO
mas
A
empezamos
NUESTRA
PRIMERA
BASE
DE
DATOS
EN
ACCESS
25
Montamos
un
escenario
con
4JttextFields
www.hackxcrack.es
Jlabels
un
JButton
Asi:
Cambiamos las variables de las cajas de texto como ya sabemos clic derecho change varia
ble name
Y pongamos nombres alusivos identificacion,nombres,apellidos,ocupacion como ya sabes que la
finalidad
es guardar esos campos digitados en una base de datos en access abrimos access para
crear la BD.
Como puedes ver le coloque de nombre BD.mdb, OJO no la guardes aun el paso a segu
ir es guardarla en la
misma carpeta de tu proyecto.
y donde estan guardados los proyectos de NETBEANS?
En Mis Documentos en la carpeta llamada NetBeansProjects hay se encuentran todos yo e
n mi caso quice
ser un poco organizado y dentro de la carpeta del proyecto cree otra con nombre based
edatos y la guarde
hay dentro =)
Ahora trabajamos
de estas asi:
en
access
damos
doble
clic
le
la
sobre
cada
columna
puse datos_personales
por que solo tenemos
colocamos
una
xD
los
nombres
26
Vemos
aria
es
como
el
estan
constituidos
los
www.hackxcrack.es
datos
de
la
tabla
tambien
vemos
que
la
llave
prim
campo
identificacion
LLAVE PRIMARIA: es la columna que representara los datos almacenados en la tabla y no
debe repetirse
Ejemplo:
Insertaste
en
identificacion:
123,
en
nombre:
jose,
en
apellidos:
mendez,
y e
n
ocupacion:
desempleado al buscar la identificacion con numero 123 sabras que haces referencia a jose
medes que es
un desocupado xDD
Bien vemos como esta conformada la tabla y nos damos cuenta que el campo identificacio
n tiene tipo de
dato autonumerico lo pasamos a texto tambien ,)
Guardamos,
hemos
terminado
con
access
volvamos
NetBeans.
class
de
nombre
puse
datos
de
access
y la
conexin
Ya
sabes
que
este
es
el
paquete
27
public
void
conectarBaseDeDatos()
www.hackxcrack.es
try {
final
String
CONTROLADOR
"sun.jdbc.odbc.JdbcOdbcDriver";
final
Class.forName( CONTROLADOR );
String RUTA_BD = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+
System.getProperty( "user.dir" )+"/dasedatos/BD.mdb"; // hacemos referencia al archivo access
//Aqui
se
declara
el
controlador
utilizar
BD.mdb
conexion = DriverManager.getConnection(RUTA_BD);
sentencia = conexion.createStatement();
// se declara una variable sentencia para la manipulacion de la base
datos
}
catch (ClassNotFoundException ex1) {
ex1.printStackTrace();
javax.swing.JOptionPane.showMessageDialog(null,"Error Carga Driver");
System.exit(1);
//En caso de errores de driver
}
catch (SQLException ex) {
ex.printStackTrace();
javax.swing.JOptionPane.showMessageDialog(null,"Error Creacion Statement");
System.exit(1);
//en caso de no acceder a la base de datos o no encontrar ruta correcta
}
}
}
SEGUIMOS
package
public
AHORA
CON
LA
CLASE
GUARDAR
mi_proyecto_de_ejemplo;
class guardar {
mi_proyecto_de_ejemplo.conexion bd = new mi_proyecto_de_ejemplo.conexion();
// Asiganmos un alias a la clase conexin en este caso bd
public void registrar_datos(String id,String n,String a, String o){
//halamos las variables declaradas en el formulario principal.. tranquilo ya las declaramos
xD
try{
bd.conectarBaseDeDatos();
//conectamos..
bd.sentencia.execute("INSERT
INTO
datos_personales(identificacion,nombres,apellidos,ocupacion
)
VALUES('"+id+"','"+n+"','"+a+"','"+o+"'"+")");
//insertamos los datos un SQL normal..
//PD no explico SQL por que hay una revista expresamente para eso =D
}catch
(Exception
e){}
}
}
28
www.hackxcrack.es
seguimos
con
el
boton,
doble
clic
aadimos
os
guie
programamos..
String id = identificacion.getText();
String n = nombres.getText();
String a = apellidos.getText();
String o = ocupacion.getText();
//Recuperamos en variables los valores digitados en las JtextField
guardar.registrar_datos(id, n, a, o);
//Mandamos las variables a la clase guardar.. ya ella sabra que
con ellas xDD
JOptionPane.showMessageDialog(null,"Datos
Guardados
Correctamente
","Mensaje
de
Confirmacion",JOptionPane.PLAIN_MESSAGE);
//Decimos que ya todo esta heco (H)
identificacion.setText("");
nombres.setText("");
apellidos.setText("");
ocupacion.setText("");
// y limpiamos los campos para seguir digitando J
Listo
Corremos
la
aplicacin
;D
hacer
29
Verificamos
la
Base
de
www.hackxcrack.es
datos..
conexin
Si
no
lo
tienes
instalado
/MySQL-
5.1/mysql-5.1.51-win32.msi
Proyecto
bases
puedes
de
descargarlo
de
Utilizaremos
los
mismos
mecanisnos
ubicando
a
un
mejor
entendimiento y manejo de clases
empezamos!!
PARA
EL
EJEMPLO
REGISTRO
DE
ESTUDIANTES DE UN
nuestra
DATABASE
Para
Activarla
USE
colegio
HE
DECIDIDO
COLEGIO
Base
Abrimos La Consola
JOG Navicat
CREATE
utilizando
aca:
como
SGBD Sistema
Gesto
http://dev.mysql.com/get/Downloads
Realizar:
Creamos
datos
guardar
de
de
cada
QUE
funcion
en
CREEMOS
clases
UN
PROYECTO
en
MYSQL
Por
si
no
que
Hagamos
La
llamaremos
Todo
lo
par
PARA
tenemos
un
IDE
colegio
Para
Mysql
colegio;
que
diferentes
Datos
MYSQL
Datos
en
esa
Base
de
datos
como
SQL
30
Creamos
la
tabla
donde
www.hackxcrack.es
guardaremos
todos
los
registros
CREATE TABLE
alumnos (
id VARCHAR(20) NOT NULL,
nombres VARCHAR(30) NOT NULL,
apellidos VARCHAR(30) NOT NULL,
edad VARCHAR(10) NOT NULL,
direccin VARCHAR(50) NOT NULL,
primary key(id)
);
RECIBIMOS..
Query
OK,
PERO
aun
asi..
SHOW
rows
affected
verificamos
(0.25
que
sec)
la
tabla
se
haya
creado..
necio
yo?
xDD
TABLES;
+-------------------+
| Tables_in_colegio |
+-------------------+
| alumnos
|
+-------------------+
Okey
Otro
hay
tip
DESCRIBE
tenemos
SQL
de
nuestra
paso
tabla
miremos
creada
en
como
est
la
base
de
compuesta
datos
la
colegio
tabla..
alumos;
+-----------+-------------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id
| varchar(20) | NO | PRI |
|
|
| nombres
| varchar(30) | NO |
|
|
|
| apellidos | varchar(30) | NO |
|
|
|
| edad
| varchar(10) | NO |
|
|
|
| direccion | varchar(50) | NO |
|
|
|
+-----------+-------------+------+-----+---------+-------+
Nuestro
IDE
la
de
descripcin
NetBeans
31
de
la
tabla
Creamos
que
el
hicimos
Proyecto
anteriormente,,
para
Realizar
www.hackxcrack.es
bue,,
las
dej
Conexio
En
Para
este
de
caso
yo
lo
llame
organizar
los
elementos
proyectos
la
explique
proyecto_conexion
en
nuestro
ps
pero
alusivo
proyecto
por
lo
separamos
general
lo
que
las
otro
paquete
al
proyecto
como
en
la
siguiente
32
Clic
derecho
sobre
el
imagen..
www.hackxcrack.es
java
alumnos
estamos
clases
mularios
Agregamos
hay
de
que
haciendo
los
for
Listo
es
entonces
y
en
el
en
el
paquete
guardaremos
Clic
la
en
he
llamado
guardaremos
todo
los
el
todo
lo
paquete
que
clases
sern
la
formularios
cual
se
encargara
terminar.
LA
que
son
clas
=)
conexionMySQL
CODIGO
DE
package
import
import
import
import
import
clases;
java.security.Principal;
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
CLASE
conexionMySQL:
33
import
si
paquete
proyecto_conexion
Yo
clase
java.sql.Statement;
www.hackxcrack.es
de
realizar
la
public
void
conectarBaseDeDatos()
try {
final String CONTROLADOR = "org.gjt.mm.mysql.Driver";
//Al igual que en el ejemplo anterior Declaramos que
Class.forName(
CONTROLADOR
driver
vamoa
utilizar
);
conexion = DriverManager.getConnection("jdbc:mysql://localhost/colegio","root","root");
//hacemos la conexion en este caso en localhost por que la bd esta en nuestro
//especificando usuario y contrasea
sentencia = conexion.createStatement();
//variable sentencia encargada de las funciones hacia la db
}
catch
(ClassNotFoundException
ex1)
pc
ex1.printStackTrace();
javax.swing.JOptionPane.showMessageDialog(null,"Error
//encaso de errores referentes a driver error de
System.exit(1);
}
catch (SQLException ex)
{
ex.printStackTrace();
javax.swing.JOptionPane.showMessageDialog(null,"Error
//encaso de no encontrar la bd
System.exit(1);
}
}
public void desconectarBaseDeDatos() {
// metodo de desconexion
try {
if (conexion != null ) {
if(sentencia != null) {
//si la conexion devuelve valores nulos
sentencia.close();
}
conexion.close();
Carga
carga,
Driver");
no encontrarlo
Creacion
etc
Statement");
34
www.hackxcrack.es
}
}
catch (SQLException
ex.printStackTrace();
}
}
}
ex)
realizar
conexiones en
la
ballas
que
un
utilizar
futuro
te
Luego
Clic
nos
vamos
derecho
en
Encaso
mos
de
No
a
el
tener
Bibliotecas
paquete
el
bibliotecas
Driver
aadimos
Instalado
nuestro
aadir
no
driver
Biblioteca
sera
nada
raro
#D
pues
lo
descarga
http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.13.tar.gz
Lo descargamos obvio que ya
ecas
Ahora seria clic derecho sobre
no
sera
bibliotecas
clic
derecho
Aadir
sobre
archivo
35
Yo
Y
lo
lo
Nombre
i
n
llame
Bibliotecas
aadir
bibliot
JAR/Carpeta
el
archivo JAR
las
funciones
direc
xDD
www.hackxcrack.es
inicio.
diseamos
de
la
siguiente
manera
Tipo_Componente
JTextField
JTextField
acorde
nuestros
datos
de
la
bd
Asi:
a
JTextField
e
JTextField
buscar_ident JTextField
Mitabla
JTable
5 JButtons
linda
Damos
Clic
Derecho
al
field
nos
vamos
a
propiedades
luego
a la
de
variables
y
escogemos public static
Como
en
la
siguiente
interfaz
seguimos
Componente en
pestaa
imagen
cdigo
>
haciendo
este
publicas
ejemplo
luego
nos
ubicamos
todos
Que
en
los
es
componen
un
Jtext
modificadores
Nota:
Un Acceso pblico es para Que
desde Cualquier parte de
nuestro proyecto podamos
acceder a estos componentes
ya sea asignndole valores o
extrayendo valores de estos.
Igual
Con
Los
Dems
Componentes..
36
Creando
Las
Clases
Guardar,
Eliminar,
Actualizar,
www.hackxcrack.es
buscar
Mostrar
CODIGO
DE
package
import
public
LA
CLASE
GUARDAR
clases;
javax.swing.JOptionPane;
class guardar {
clases.conexionMySQL
es igual
que
conexionMySQL
public void
ireccion){
bd
new
clases.conexionMySQL();//se
declara
un
alias
bd
registrar_alumno(String
//aqui se halan
ajas de texto
las
variables
//hehe
id,
declaradas
ahora
las
String
en
el
declaramos
nombres,
formulario
String
de
inicio
apellidos,
que
String
traen
los
edad,
valores
String
de
(Exception
las
d
c
trankis
try{
bd.conectarBaseDeDatos();
//conectamos
bd.sentencia.execute("insert
into
alumnos(id,nombres,apellidos,edad,direccion)
values
("+id+",'"+nombres+"','"+apellidos+"','"+edad+"','"+direccion+"')");
//insertamos los datos
JOptionPane.showMessageDialog(null, "El
Alumno
Fue
Registrado
Correctamente",
:MENSAJE::.",
JOptionPane.INFORMATION_MESSAGE);
}catch
que
decir
" .:
e){}
}
}
37
CODIGO
DE
LA
CLASE
www.hackxcrack.es
eliminar
package clases;
import javax.swing.JOptionPane;
public class eliminar {
clases.conexionMySQL bd = new clases.conexionMySQL();
//Denuevo el alias a la conexion obvio hay que llamarla para conectar #D
public void eliminar_alumno(String ide){
try{
bd.conectarBaseDeDatos();
bd.sentencia.execute("Delete From alumnos WHERE id= ('"+ide+"')");
//ejecutamos un simple SQL borrando de la tabla alumno donde la ide sea igual a la
ide
JOptionPane.showMessageDialog(null, "El
Alumno
Fue
Eliminado
Correctamente",
" .::
MENSAJE::.",
JOptionPane.INFORMATION_MESSAGE);
}catch (Exception e){}
}
}
CODIGO
DE
LA
CLASE
ACTUALIZAR
package clases;
import javax.swing.JOptionPane;
public class actualizar {
clases.conexionMySQL bd = new clases.conexionMySQL();
public void actualizar_alumno(String elegir_id, String no, String ape, String ed, String
dir){
//Estas variables vienen delformulario de inicio pronto las declararemos /D
try{
bd.conectarBaseDeDatos();
bd.sentencia.execute("UPDATE
alumnos
SET
nombres='"+no+"',apellidos='"+ape+"',edad='"+ed+"',direccion='"+dir+"' WHERE id= '"+elegir_id+"'");
//hey!!
CLASE
Fueron
vamos
Actualizados
cambiando
Corr
las
in
BUSCAR
import javax.swing.JOptionPane;
public class buscar {
clases.conexionMySQL
pelicula xD
bd = new
clases.conexionMySQL();//Esta
38
linea
es
la
www.hackxcrack.es
protagonista
de
la
public
void
buscar_alumno(String
buscar_id)
try{
bd.conectarBaseDeDatos();
bd.resultado = bd.sentencia.executeQuery( "SELECT * FROM alumnos WHERE id = '"+busc
ar_id+"'");
if( bd.resultado != null ) {
while(bd.resultado.next() ) {
proyecto_conexion.inicio.i.setText(""+bd.resultado.getString("id"));
proyecto_conexion.inicio.n.setText(""+bd.resultado.getString("nombres"));
proyecto_conexion.inicio.a.setText(""+bd.resultado.getString("apellidos"));
proyecto_conexion.inicio.e.setText(""+bd.resultado.getString("edad"));
proyecto_conexion.inicio.d.setText(""+bd.resultado.getString("direccion"));
}
}
else
JOptionPane.showMessageDialog(null,"Ningun
dato
Encontrado","Mensaje
de
Informacion",JOptionPane.PLAIN_MESSAGE);
}catch (Exception e){}
}
}
Fijar que
Aqu buscamos en la tabla alumnos la identificacion que este almacenada en buscar_id
y decimos mediante esta cadena
if( bd.resultado != null ) {
en palabras rusticas si encuentra algo, osea si la consulta no biene vacia null
mostramos los datos relacionados con la consulta en los campos de texto
proyecto_conexion.inicio.i.setText(""+bd.resultado.getString("id"));
vemos que especificamos la ruta proyecto.formulario.componente
CODIGO DE LA CLASE MOSTRAR
Encargada de cargar los datos de
package
la
tabla
de
Mysql
en
la
Tabla
del
clases;
39
alumnos" );
www.hackxcrack.es
Programa
proyecto_conexion.inicio.mitabla.setValueAt(""+bd.resultado.getString("id"),i, 0);
proyecto_conexion.inicio.mitabla.setValueAt(""+bd.resultado.getString("nombres")
,i,
1);
proyecto_conexion.inicio.mitabla.setValueAt(""+bd.resultado.getString("apellidos")
,i,
2);
proyecto_conexion.inicio.mitabla.setValueAt(""+bd.resultado.getString("edad"),i,
3);
proyecto_conexion.inicio.mitabla.setValueAt(""+bd.resultado.getString("direccion")
,i,
4);
//Asignamos
los
valores
de
la
consulta
la
tabla
i=i+1;
}
}
}catch
(Exception
e){}
}
}
SEGUIREMOS
NES
DEL
FORMULARIO
AHORA
DE
CON
LA
clic
en
el
DE
FUNCIONES
boton
souce
en
un
alias
sus
funciones
el
formulario
las
clases
para
que
BOTO
estas
pueda
asi:
inicio
public inicio()
io inicio
LOS
INICIO
ASIGNACIN
{ //Esto
es
para
que
te
guies
Recuerda
que
estamos
initComponents();
mostrar.mostrar_datos();
}
//Declaramos variables para realizar todas las
//Debajo de @SuppressWarnings("unchecked")
funciones:
String id;
String nombres;
String apellidos;
String edad;
String direccion;
String elegir_id;
40
www.hackxcrack.es
donde
debes
Formulario
en
el
ubic
Corra
formular
SEGUIMOS
CON
LAS
FUNCIONES
DE
LOS
BOTONES
BOTON GUARDAR
id = i.getText();
nombres = n.getText();
apellidos = a.getText();
edad = e.getText();
direccion = d.getText();
//capturamos los datos digitados en los campos de texto
guardar.registrar_alumno(id, nombres, apellidos, edad, direccion);
//Aqu lo que hacemos es enviar los datos de los campos de texto
ase guardar
i.setText("");
n.setText("");
a.setText("");
e.setText("");
d.setText("");
//Despues de Guardar Limpiamos los campos
BOTON ACTUALIZAR
elegir_id = buscar_ident.getText();
nombres = n.getText();
apellidos = a.getText();
edad = e.getText();
direccion = d.getText();
actualizar.actualizar_alumno(elegir_id,
nombres,
BOTON ELIMINAR
eliminar.eliminar_alumno(buscar_ident.getText());
i.setText("");
n.setText("");
a.setText("");
e.setText("");
d.setText("");
buscar_ident.setText(""); //Solo se limpian los
apellidos,
edad,
en
direccion);
campos
BOTON BUSCAR
buscar.buscar_alumno(buscar_ident.getText());
BOTON LIMPIAR
i.setText("");
n.setText("");
a.setText("");
e.setText("");
d.setText("");
buscar_ident.setText("");
41
Una
ultima
screen
del
programa
en
www.hackxcrack.es
ejecucin:
variables
la
cl
Aqui termina la conexion con MYSQL, con esto hemos logrado hacer las funciones primordiale
s de un gran
proyecto como
lo
son
guardar,eliminar,actualizar,buscar de
seguro
ha
sido
una
gran
ay
uda
para
todo
aquel que quiere iniciarse en java y sacarle el mayor provecho a un lenguaje tan versatil y
poderoso como
este.
Recuerda..
El que AMA
VaNcHoXcHk
Gracias.
lo
que
hace,
aun
arrodillado
alcanza
las
estrellas
42
www.hackxcrack.es