Archive
Oracle, revela los planes de productos Open Source de Sun
En Abril de 2009 se anunció la adquisición de Sun por parte de Oracle, muchos nos sorprendió la capacidad y el poder de inversión de Oracle; desde eso ha venido mucho análisis y espectativa de los productos Open Source abanderados por Sun, como Java, Netbeans, OpenSolaris entre otros.
Hoy he visto un documento que revela los planes de algunos de estos productos, a continuación mencionaré en forma breve:
Acelerar la inversión y la innovación en Java:
Oracle Planea acelerar la inversión en la plataforma Java para beneficio de sus clientes y la comunidad Java.
Así también quieren comprometerse mas con la comunidad que hace que Java sea ubicuo, una plataforma innovativa alrededor de los estándares abiertos.
¿Qué planea Oracle para Solaris?
Oracle planea invertir mas dinero en Solaris del que invertía Sun.
Las capacidades del Sistema Operativo Solaris lo hacen lider en desempeño, escalabilidad, confiabilidad y seguridad, todos estos son requerimientos de los clientes.
Que está planeando Oracle para el servidor empresarial Glassfish, después que la transacción termine?
Oracle planea continuar desarrollando Glassfish como una implementación Open Source de la versión empresarial de Java (Java EE), soportando activamente la comunidad de Glassfish.
¿Qué planea Oracle para Netbeans?
Se espera que Netbeans sea una opción Open Source y complemente JDeveloper y Oracle Pack for Eclipse.
¿Qué planea Oracle para MySQL?
Oracle planea invertir mas dinero en MySQL de lo que invertía Sun.
Oracle Planea integrar MySQL a su suite de producto de Base de Datos.
¿Que hay de Linux?
Oracle aún continua con su compromiso con el Sistema Operativo Linux y planea continuar desarrollando y mejorando Linux.
Enlace del documento: http://www.oracle.com/ocom/groups/public/documents/webcontent/038563.pdf
Gedit como un IDE
Gedit es el editor por defecto que trae Gnome.
Gedit tiene tareas básicas como resalto de sintaxis de varios lenguajes de programación, como C, C#, Java, Python entre otros, yo lo uso con frecuencia para editar fuente.
Hace poco descubrí muchas utilidades que ofrece, pero esto que ví realmente me dejó descrestado, la posibilidad de personalizar Gedit a tal punto que es posible navegar entre las clases que realizo en Java, el plugin es llamado gedit-classbrowser, se puede descargar desde http://www.stambouliote.de/projects/gedit_plugins.html, la instalación resultó ser sencilla:
Habilité el navegador de archivos de gedit, que me ubica un panel lateral para navegar entre los archivos del sistema.
Despúes de descargar el plugin lo descomprimí y renombre la carpeta a classbrowser.
Despúes de esto ubiqué el contenido al interior de la carpeta en ‘/usr/lib64/gedit-2/plugins‘; es necesario activar el plugin:
En la barra de herramientas: Editar -> Editar -> Preferencias [Complementos] y activar el plugin de Class Browser.
pero al arrancar Gedit en consola, me dí cuenta que solicitaba el ctag, no lo encontraba y no navegaba por las clases que abria, así que instalé el paquete:
# yum install ctags -y
Ya con esto el plugin funciona.
Pd: El truco lo ví en : http://byroncorrales.blogspot.com/2009/07/transformando-gedit-en-un-ide-tu-medida.html
Annotation @Override, Polimorfismo, Herencia
Ahora ando aprendiendo Annotations en Java.
Leyendo la función del annotation @Override, consiste en que si la clase Padre y la hija tienen un método con el mismo nombre, con este annotation no hace una sobre carga del método sino que lo redifine usando el método de la clase Hija, al fin y al cabo esa clase es la que usa el annotation.
Haciendo un ejercicio con una clase base ‘Parent’ y otra clase ‘Child’ que hereda, en ambas clases hay solo un método llamado ‘doWork()’ pero que imprimen distintos mensajes, la clase hija ‘Child’ declara un annotation ‘@Override’ obtuve mensjaes de error y comportamientos no deseados, moleste mucho con las clases y tenia esto:
// Clase Parent.java
class Parent {
public static void doWork ()
{
System.out.println (” Padre”);
}
}// Clase Child
class Child extends Parent {
@Override –> Acá uso el annotation para redefinir el método de la clase Padre
public static void doWork ()
{System.out.println (” Hijo”);
}
public static void main (String args[])
{
Parent niño = new Child (); // Polimorfismo, un Child es de tipo Parent, por eso es posible, no aplica a la inversa
Child niña = new Child ();niño.doWork ();
niña.doWork ();
}
}Al compilar la clase ‘Child’ obtenia este mensaje de error:
Child.java:5: method does not override or implement a method from a supertype
@Override
^
1 error
Si comentaba la línea del anotation podia compilar y obtenía una salida no deseada:
$ java Child
Padre
Hijo
Esto que significa?, que no esta funcionando el polimorfismo, mucho menos una sobrecarga de método, la salida que debo obtener es en ambos casos Hijo Hijo, no debe imprimir en ningún momento el texto Padre, despúes de reventar cabeza un rato, descubrí el motivo:
Los métodos static como son los métodos doWork() de las dos clases son métodos de Clase, no de instancia, es decir, no están asociados al objeto instanciado (Child) sino a la clase, así cree n cantidad de objetos de tipo ‘Child’, siempre existirá ese método por la clase ‘Parent’, por eso cuando el objeto niño llama el método doWork() no hace uso del método de un objeto que sería de tipo ‘Child’ sino que usa el método de dicha clase.
Por esa razón no hay polimorfismo, y obtengo el error al compilar con el annotation ‘@Override’.
Solución, quitar la palabra static de los métodos:
// Clase Parent.java
class Parent {
public void doWork () // Sin static
{
System.out.println (” Padre”);
}
}// Clase Child
class Child extends Parent {
@Override
public void doWork () // Sin static
{
System.out.println (” Hijo”);
}
public static void main (String args[])
{
Parent niño = new Child (); // Polimorfismo, un Child es de tipo Parent, por eso es posible, no aplica a la inversa
Child niña = new Child ();niño.doWork ();
niña.doWork ();
}
}
$ java Child
Hijo
Hijo
Pd: Creo que este post esta muy aburrido.
Book Review: “The Passionate Programmer”
El amigo Billy Tobon, uno de los pocos arquitectos Java de Colombia, ha publicado en su blog personal un review del Libro “The Passionate Programmer”, espero sea de su interes, realmente Billy es un teso.
Link: http://codeskine.com/?p=83
Desplegando Applets Java.
Saludos.
Los applets Java, son aplicaciones realizadas en java que necesitan otra plataforma anfitriona para poder ejecutar, por ejemplo los tradicionales applets java que ejecutan sobre un navegador web, otro ejemplo común son los MidLets que son aplicaciones Java para ejecutar sobre dispositivos moviles.
En este pequeño post verás como desplegar un applet Java en un navegador.
Explicación: El applet solicita al usuario dos números cualquiera en dos dialogos de entrada de datos, luego los suma y muestra el resultado de la suma en un cuadro
:
// AdditionApplet.java -> Nombre del archivo
import java.awt.Graphics;
import javax.swing.*;public class AdditionApplet extends JApplet {
double sum;// Inicializador de las variables y valores del applet
public void init ()
{
String firstNumber;
String secondNumber;
double number1, number2;//Lectura de los valores en un JOptionPane
firstNumber = JOptionPane.showInputDialog (
“Ingrese el primer número para el calculo”);
secondNumber = JOptionPane.showInputDialog (
“Ingrese el segundo número para el calculo”);// Casteo de los números a Double
number1 = Double.parseDouble (firstNumber);
number2 = Double.parseDouble (secondNumber);// Suma de los números
sum = suma (number1, number2);
}private double suma (double num1, double num2)
{
double sumita;
System.out.println (”Sumando: “+num1+” + “+num2);
sumita = num1 + num2;
System.out.println (”Resultado:”+sum);
return sumita;
}public void paint (Graphics g)
{
super.paint (g);// Dibuja un rectangulo empezando desde (15,10)
// 270 pixeles de ancho y 20 de alto
g.drawRect (15, 10, 270, 20);g.drawString (”El resultado de la suma es: “+sum, 25, 25 );
}
}
Despúes realizo una página html con cualquier nombre que invoca la clase:
<html>
<body>
<applet code=”AdditionApplet.class” width=”300″ height=”60″>
</applet>
</body>
</html>
A continuación es necesario compilar el código fuente para generar el .class que invoca el archivo html
$ javac AdditionApplet.java
Podemos visualizar la aplicación, abriendo la página web o usando el appletviewer, con la última opción se hace así:
$ appletviewer archivo.html ->Esquema
en mi caso:
$ appletviewer ejemplo4.html:
Instalar Mobile Processing Fedora 64b
MarlonJ ha iniciado en su portal un curso en Video de Desarrollo de aplicaciones para dispositivos moviles con J2ME y el IDE Mobile Processing.
En la primera sesión se pretendió instalar Mobile Processing en los equipos, en mi caso al intentar correr mobile en Fedora 11 64 bits obtuve este mensaje de “error”:
$ sh ./mobile
It appears that the version of Jikes distributed with Processing
cannot properly run on this system.Possible solutions:
+ If you already have Jikes installed on your system, you may
just need to remove the version that is included with Processing.+ You probably just need to track down a version of Jikes that will
work with your distribution.+ You may need to install the rpm/package for compat-libstdc++
This is what it takes to get things running on most versions
of RedHat Linux or Fedora Core.+ If all else fails, or if you just like building stuff yourself,
you can download the source for Jikes from SourceForge:
http://sourceforge.net/project/showfiles.php?group_id=128803
And it just takes a simple ./configure and make, followed by
copying src/jikes to the processing-XXXX folder and you should
be all set.If you get stuck, ask questions online from the helpful folks via
the Processing discussion board: http://processing.org/discourse/Good luck!
Despúes de indagar un poco, probando soluciones, encontré que el archivo ‘jikes’ esta compilado para 32 bits, lo que hizé fue descargar del enlace que propone el mensaje de error ‘http://sourceforge.net/project/showfiles.php?group_id=128803‘ y compilar, despúes es necesario reemplazar el archivo Jikes que esta en la carpeta de Mobile Processing:
$ ./configure
$ make
$ cd src/
$ cp jikes ~/java/mobile/jikes -> Es el path donde descomprimí el Mobile Processing
$ cd ~/java/mobile/
$ ./mobile

Mobile Processing Fedora 64 bits
Ya el mobile processing corre, pero tengo otro problema cuando intento correr algún ejemplo, es una excepción como esta:
/tmp/untitled8257517426696114186.tmp/sketch_090812a/midlet/sketch_090812a.java:0:0:0:0: Semantic Error: You need to modify your classpath, sourcepath, bootclasspath, and/or extdirs setup. Jikes could not find package “java.lang”
Este error se resuelve, descargando e instalando la versión de Java para 32 bits, reinstalando el j2mewtk indicandole la ruta de javac de 32 bits.
Tendencias en el trabajo de TICs (De CNN)

En este enlace de CNN: , se realiza una pregunta acerca de las oportunidades laborales a las que pueden aspirar los recien graduados.
La respuesta se plantea y sostiene en cuanto a las tendencias y skills (como es en español?) requeridos en este momento de “crisis”, los captadores de talento humano tienden a buscar:
Seguridad: Los empleadores ahora buscan gente que haya alcanzado certificaciones de seguridad como es el CISSP (Profesional certificado en Sistemas de Seguridad).
Virtualización: Este termino se refiere a la practica de ejecutar multiples servidores en una sola entidad de Hardware, incrementando la eficiencia y el ahorro de energía.
Java EE: El java de sun Microsystems y su edición empresarial, marca el estándar de las aplicaciones online, la certificación JSCP tiene amplia demanda, aunque la oferta es tanta que esta perdiendo mucho valor agregado.
SAP: Muchos empleadores prefieren candidatos con experiencía directa con SAP, cuya certificación desplaza a candidatos con mayor experiencía.
.Net: Microsoft tiene una gran cantidad de certificaciones. Aunque la mas valorada es la MCPD.
El artículo también menciona cuando los trabajos de TI deben interactuar con otras áreas funcionales de la empresa estos no son outsourced (Otra duda en español).
Sin embargo en Colombia los requerimientos son distintos, acá prima la necesidad de candidatos con experiencia en Linux, Oracle, PHP y VoIP, aunque este último es muy requerido no es bien remunerado.
Legal de CNN: © 2009 Cable News Network. A Time Warner Company. All Rights Reserved.




