Contenido relevante:
SCJP: Intro, cap1, cap2, cap3, cap4, cap5, cap6, cap7, cap8
Eclipse: Instalacion, Primer error, Mas...
Linux: Adm archivos, User, Com, Compresion, RAID, Compiz, Mas...
Java: Instalacion JDK (Java), Mas...

SCJP C1P3: Declaracion de interfaces

Capitulo 1, parte 3
viene de: parte 2


Declaración de interfaces

Una interfaz es un contrato, no dice como va a hacer, simplemente se especifica los requerimientos.
Es 100% abstracta, no se define nada, es solo declarativa

* Todos los métodos de las interfaces, implícitamente son públicos y abstractos, no es necesario declararlo
* Todas las variables definidas deben ser public, final y static, o sea, solo puede tener constantes
* Los métodos no pueden ser static, final, strictfp o native
* Una interfaz puede extender de una o varias interfaces
* Una interfaz no puede implementar otra interfaz o clase
* Se declara con la palabra "interface"
* Los tipos de interfaz pueden ser polimorficas

Declaracion de miembros de clase
Access:
Igual que los modificadores de clases, pero para los métodos hay un modificador mas: "protected", en interfaces no.
Public, protected, default, private

Protected
Es igual a default, con la salvedad de que no es visible desde otros packages, solo son visibles si se esta heredando. En otras palabras los métodos protected solo son visibles por medio de la herencia, o desde el mismo package, usado para declarar metodos que tienen funcionalidad solo a travez de la herencia.

Es recomendable usar la metodología de los beans (atributos = setters/getters)
Los metodos privados de una superclase "no se pueden" sobreescribir

Nonaccess:
Final, Abstract, Syncronized, Native, Strictfp
Final: Prohíbe sobrescribir el método (también se pueden usar final en la linea de la declaración de un método, como argumento de una variable)
Abstract: SOLO se utiliza en clases abstractas y no contiene implementacion, con esto se fuerza a que las clases que extienden deban implementar dicho metodo.
Algo a tener en cuenta es que como no lleva implementacion, la declaración es sin llaves y termina con punto y coma
abstract void pepe2();
Syncronized: Este modificador fuerza a que solo un thread a la vez pueda acceder a dicho método.
Native: Con este modificador se puede codificar en C y compilar a nivel maquina, no maquina virtual.
Strictfp: Fuerza a que se utilize la norma IEEE754 para los cálculos con coma flotante (float)

continua en: parte 4

SCJP C1P2: Declaracion de clases

Capitulo 1, parte 2
viene de: parte 1

Declaracion de clases
Nomenclatura:
* Solo puede haber un clase publica por archivo
* Los comentarios pueden estar al comienzo o al final del archivo
* El nombre del archivo debe coincidir con el nombre de la clase public
* La linea del package debe estar en la primera linea, arriba de todo el codigo.
* Puede contener varias clases no publicas
* Los imports deben estar debajo del package y arriba de la declaración de la clase
* Los imports y el package son para todo el archivo sin importar cuantas clases contenga
* Las clases no publicas no deben tener el mismo nombre del archivo

Modificadores:
De acceso: default, public, protected, private
De no-acceso: strictfp, final, abstract
De acceso:
Default: sin ningun moficador de acceso explicito, solo permite acceso al package donde se encuentra, y solo en ese nivel.
Public: acceso desde cualquier package, se encuentra en el JU (java universe)
Luego detallare los otros modificadores de acceso.

No-acceso:
strictfp: utiliza una norma IEEE754 para numeros flotantes
final:Se utiliza para no permitir herencia de la clase
abstract: nunca se inicializa, su unica razon de ser es, para que se pueda heredar de ella, para representar "cosas" genericas que todos los descendientes deberian implementar/tener

tip: cuando se declaran metodos en una clase abstracta no deben tener llaves (si es que no tiene contenido)
tip: Las clases abstractas pueden tener metodos abstractos, las clases concretas no pueden tenerlos.

no se pueden marcar con abstract y final modificadores a la vez

Continua en: parte3

SCJP C1P1: Convenciones, Identificadores y propiedades

Capitulo 1, parte 1:

***
Declaracion y control de acceso
***

Identificadores (variables) y JavaBeans


* Las variables deben comenzar con letra o caracter $ o _
* Después del primer carácter, puede contener cualquier combinación de letras o caracteres: $ _ numéricos
* No hay limites de caracteres para los nombres de las variables
* No se pueden usar keywords de java (plabras reservadas)
* Los nombres de las variables son case sensitive

Convenciones de sun:
Usar la tabulacion para las estructuras de código
Utilizar camelCase: Cada palabra concatenada su primera letra debe estar en mayuscula.

Classes:
* Primera letra debe ser mayúscula, luego utilizar camelCase.
* Suelen ser sustantivos

Interfaces:
* Suelen ser adjetivos, casi siempre en ingles termina con "ble"
Ejemplo:
Runnable
Serializable

Metodos:
* Primera letra en minúscula, luego camelCase
* Suele ser verbo-sustantivo
Ejemplo:
getBalance
doCalculation
setCustomerName

Variables:
* Primera letra en minúscula, luego camelCase
* nombres lo mas corto posible, pero que tenga un buen significado, pensar en utilizar combinaciones de nombres que sean facil de recordar.

Constantes:
* nombre en mayúscula
* utilizar como separador de palabras el underscore

JavaBeans:
Propiedades o atributos.
Se utilizan propiedades (variables con métodos propios de lectura y escritura, mas conocido como: setters and getters)
Ejemplo de invocaciones:
setPropiedad(valor);
getPropiedad();

Return: Si lo que devuelve no es booleano, se debe utilizar "get"+variable, de lo contrario, si es booleano se puede utilizar "is"+variable
isTrue();

Ejemplo:
private int size;
public int getSize(){
return size:
}
public void setSize(int n){
size=n;
}
* utilizar public para los métodos
* private para las variables

Métodos Listener

* Para registrar listeners utilizar el prefijo "add"
* Para eliminar el registro utilizar el prefijo "remove"
* Todos los Listener deben contener la palabra "Listener" al final del metodo

continua en: part2

Eclipse & java error - Ubuntu 7.10 Gutsy Gibbon

Bajamos a eclipse (3.3) y lo dejamos en un dir temporal, luego le cambiamos los permisos y descomprimimos.

Si lo ejecutamos dara un error como este:

JVM terminated. Exit code=13
/usr/bin/java
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-jar /media/work/ides/Eclipse33L/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
-os linux
-ws gtk
-arch x86
-showsplash
-launcher /media/work/ides/Eclipse33L/eclipse
-name Eclipse
--launcher.library /media/work/ides/Eclipse33L/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.0.1.R33x_v20070828/eclipse_1020.so
-startup /media/work/ides/Eclipse33L/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
-exitdata 220011
-vm /usr/bin/java
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-jar /media/work/ides/Eclipse33L/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar

Significa que falta instalar una nueva version o mas completa de java, seguir con este tutorial.
Una vez instalado el JDK, lo unico que tenemos que hacer es bajar de la web a y ponerle

Ubuntu 7.10 (Gutsy Gibbon) Tips

Algunos tips interesantes:

Ingresar como admin: sudo -s , o sudo -i
Abrir terminal:
gnome-terminal

Instalacion JDK (JAVA) - Ubuntu 7.10 Gutsy Gibbon

Instalacion de java:
Bajar el bin desde http://java.sun.com/javase/downloads/index_jdk5.jsp (por ej: JDK 5.0 Update 13, Linux self-extracting file) a /usr/local/ u otro.

Cambiar permisos (ver permisos, chmod) y luego ejecutarlo (lo descomprime)
chmod +x jdk-1_5_0_12-linux-i586.bin

Luego es necesario avisarle al SO que tenemos otro "JAVA", por defecto viene uno "basico".

Se puede hacer de dos maneras, con comandos o con una GUI:
1) Utilizamos el comando:
sudo update-alternatives --install /usr/bin/java java /home/crystian/dev/java/jdk1.5.0_12/bin 70

Comando: update-alternatives
Parametro de instalcion: --install
Lugar original del enlace: /usr/bin/java
Nombre del enlace: java
Ubicacion del JDK: /home/crystian/dev/java/jdk1.5.0_12/bin
Prioridad: 70 (cuanto mas alto, mas prioridad tendra)

Luego ejecutamos:
sudo update-alternatives --config java
nos aparece una lista, seleccionamos (poniendo el numero de la fila) la nueva entrada.

2) Con GUI
Si no te llevas bien con los comandos, tenes a galternatives, esta aplicacion es con interfaz grafica, para bajar y utilizar:
sudo aptitude install galternatives
sudo galternatives
Buscar y seleccionar "java", ir a "añadir" el directorio del nuevo SDK, aparecerá en la lista (el numero de prioridad cuanto mas alto tiene mas prioridad), verificar que quede seleccionado el nuevo jdk.

Con eso estaria instalado y listo, para comprobar ejecutar: java -version

Recomendacion:
seria util tambien crear las variables del entorno de java:
sudo vi /etc/bash.bashrc:
agregar al final:
export JAVA_HOME=directorio raiz donde está jdk
export PATH=$JAVA_HOME/bin:$PATH

Mostrar texto en el booteo- Ubuntu 7.10 Gutsy Gibbon

A esto se lo conoce como: verbose booting process.

Entrar a la consola:
Editar el archivo menu.lst con: sudo nano /boot/grub/menu.lst
Debajo de todo suelen aparecer los sistemas operativos configurados en grub, buscamos el de ubuntu y le sacamos el parametro final "quiet spalsh"
Reiniciamos y listo!


:)

Enlaces Linux - Ubuntu 7.10 Gutsy Gibbon

Enlaces duros y simbolicos:

ln archivo archivo2, crea un enlace duro llamado fichero2 apuntando al inodo de fichero (solo archivos)
ln -s archivo archivo2, crea un enlace simbólico, puede apuntar a un archivo o un directorio.
si se borra algún archivo "duro", no se borra físicamente el archivo hasta que no se borren todos los enlaces. los simbólicos se pueden borrar pero quedaria huérfanos

ls -i, para ver el N del inodo
ls -l, para ver cantidad de enlaces (segunda columna) y en los simbólicos se ve a donde apuntan por medio de "->" en la ultima columna

Comandos de compresion / descompresion de linux

Existen varias opciones de compresión de ficheros en Linux: gzip, bz2, rar, zip, y
todos ellos se pueden combinar con el empaquetar o archivador TAR.

tar
Archivador, agrupa ficheros en uno, además se le puede decir que comprima:

tar cfp resultado.tar /etc /var
guarda el contenido de /etc y /var dentro del fichero resultado.tar

tar xfp resultado.tar
saca todo el contenido de resultado.tar

tar zcfp usr.tgz /usr
archiva y comprime con gzip el directorio /usr

tar jcfp usr.tgz /usr
archiva y comprime con bzip2 el directorio /usr

tar zxfp usr.tgz
Descomprime el fichero anterior

gzip/gunzip, zip/unzip, rar/unrar
Compresor/Descompresor. Los ficheros comprimidos con gzip o con zip no se
descomprimen igual. Un fichero comprimido con el winzip habría que abrirlo con el unzip en linux.

gzip fichero
comprime fichero, le ańade la extensión gz

gunzip fichero.gz
descomprime ficheros gz.

zip -r9 todo.zip directorio/
comprime el directorio en el fichero todo.zip

unzip: descomprime para ficheros zip

bz2/bunzip2
Compresor cańero, comprime bastante más que gzip, aunque tarda y chupa mas cpu

bz2 fichero
comprime fichero, le ańade la extensión bz2

bunzip2 fichero.bz2
descomprime

tar jcfp usr.tar.bz2 /usr
archiva y comprime con bz2

GRACIAS: Ińigo Tejedor & Pello Altadill (PDF)
http://4party.cuatrovientos.org