Lenguajes JVM

Otros lenguajes para la JVM (Groovy, Scala, Clojure, etc)

Java 8 se prepara para la nube - para octubre del 2012 o finales de año.

Comienzan los trabajos en Java 8, que incluirá características como multilantencia y modularidad que no pudieron incluirse en Java 7, lanzada hace apenas una semana.

Ahora que Java 7 SE se ha lanzado oficialmente, se han iniciado los trabajos sobre Java 8 SE y lo primero es decidir qué características se incluirán en la próxima versión del lenguaje de programación, y una de las prioridades es preparar Java para la nube.

Oracle dejó fuera la mayoría de las características avanzadas planeadas para Java 7 con el fin de no retrasar más el lanzamiento, y esas características podrían incluirse en Java 8.

Fuente 1: http://www.itespresso.es/java-8-se-prepara-para-la-nube-52237.html

Tanto Java 7 como Java 8 mejoran la productividad del lenguaje y reducen el código repetitivo. Las especificaciones del proyecto (Java Specification Request) actualmente liberadas son:
•JSR 334
•JSR 335
•JSR 336
•JSR 337

Fuente 2: http://www.desarrolloweb.com/de_interes/java-7-java-8-ultima-hora-4392.html

POR MIENTRAS DISFRUTEN DE JAVA 7

Y para la gente que quiere mas información les damos más: http://www.javaworld.com/community/node/7653
esta en ingles.

Erasure vs. reification ( preguntas sobre un blog post de Cedric Beust )

Resumen

( para el que como yo, odie las paredes de texto )

¿Podrá convivir el código con generics en Java y código con reified generics de los NJVML's?

Versión larga

( para el que como yo, a veces quiere leer algo largo porque parece interesante )

Le dejo una entrada de blog de Cedric Beust que habla sobre los generics en Java y los retos que presentan dos nuevos lenguajes ( bueno tres lenguajes ) para agregar una cosa que se llama reification ( reified generics ), la palabra reify significa según google, hacer algo abstracto más concreto. C# y C++ tienen reifed generics

http://beust.com/weblog/2011/07/29/erasure-vs-reification/ ( inglés )

Generics

Repaso de los generics.

Sin generics:

List  personas = new ArrayList();
personas.add( new Persona("Oscar", 0x20 ) );
....
Persona oscar = ( Persona ) personas.get( 0 ); // se necesita el cast
personas.add( new Integer( 0 ) ); // Ok, no se queja..

Con generics:

List<Persona> personas = new ArrayList<>(); // Se especifica de la lista es de Persona ( since 1.7 ya se puede escribir usar el "diamante" )

Kotlin: otro lenguaje más para la JVM

Les comparto la noticia del anuncio del pasado 19 de julio del nuevo lenguaje de programación enfocado en la JVM y desarrollado por Jetbrains.

http://hackerdou.com/?p=732

Scala: Parte 2

Los primeros pasos en Scala
Como había comentado en mi post anterior sobre el lenguaje Scala, mi pretensión es contribuir "paso a paso" con algunas de las cosas importantes de este lenguaje, discutiendo conceptos relevantes y algo de código para ilustrar esos conceptos.
Creo que es necesario aprender a caminar con pasos firmes para después correr, y por esa razón me voy despacio explicando cada cosa en su momento.
Casi todos los libros y tutoriales de Scala aconsejan comenzar con el intérprete de Scala y "oyendo" a los que saben voy a hacer lo mismo, aunque también me gustaría "saltar del REPL a programas completos. Esa forma me ha ayudado a entender el lenguaje, aunque debo confesar que aun me falta mucho por aprender y que bueno que sea así pues evito el aburrimiento.
El REPL (Read Eval Print Loop) es un shell interactivo que compila código de Scala y retorna el resultado (o el tipo) de manera inmediata. Espero que todos los que leen esto ya tengan en su máquina a Scala y puedan interactuar con el intérprete a medida que leen esta notas.
Definamos algunas variables en el REPL:

scala>val mensaje = "Hola Java Mexico"

Traductor Java Zone

Seguimos sacandole jugo a las apis de Google XD, desarrollamos un sencillo programa para mostrar el funcionamiento de la api de google translate.

Codigo Clase Principal

package clases;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.UnsupportedLookAndFeelException;
import com.google.api.translate.Language;
import com.google.api.translate.Translate;

public class Principal extends JFrame {

    JTextArea txtorigen,txtdestino;
    JComboBox comboorigen, combodestino;
    JButton btntraducir;
   
    public Principal(){
       
        try {
             UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
            } catch (ClassNotFoundException e) {
             e.printStackTrace();
            } catch (InstantiationException e) {

Scala: Parte 1

En este sitio se han discutido algunas de las cosas del lenguaje Scala, todas ellas muy interesantes y que han llamado la atención de los participantes en esta comunidad.

Tengo la intención de escribir varios artículos sobre este lenguaje de manera “disciplinada” lo que quiere decir comenzar desde el principio, aunque seguramente repetiré algunas de las cosas que ya se han dicho aquí. Eso no es traumático: a veces conviene leer lo que varios dicen sobre lo mismo.

Seguramente va a suceder que los posts queden “algo” extensos: pongo el parche antes que salga el grano, aceptando cualquier crítica al respecto y a otras cosas que pueda escribir aquí.

Comienzo entonces con una introducción al lenguaje. Para algunos será “pan comido” para otros será carbohidrato por digerir.

Scala es un lenguaje escalable
Scala es bautizado con ese nombre para precisamente decir que se inventa un lenguaje escalable.

Sobre invokeDynamic en Java 7

Nota Esta es una sobresimplificación, para más detalles ver el link al final.

Una cosa que viene en Java 7 esa si seguro es la instrucción invokeDynamic que si bien no será posible usar desde Java mismo, dará un boost sorprendente para todos los lenguajes dinámicos que corren sobre la JVM ( cuando sean portados claro ).

A manera de resumen y como una sobresimplificación ( que conste ):

Cuando Groovy, JRuby, Jython y otros lenguajes con tipeo dinámico invocan un método sobre la JVM hacen algo como esto:

def veamos( objeto )
    objeto.salvar()
end

Invocan al método salvar() pues... dinámicamente, al vuelo, siempre y cuando el objeto sea de una clase que tenga ese método. Si no lo tiene pues nomás truenan en runtime y ya.

La forma más fácil de entender como se invoca ese métod dinámicamente es pensar en algo similar a lo siguiente en Java:

Method m = objeto.getClass().getMetodo("salvar");
m.invoke( objeto );

Programación orientada a objetos para novatos

Principios de programación Orientada a Objetos

Presentación de Ryz en el HackerRoomMx ( vie. 27 mayo 2011 8 p.m. )

Después de casi un mes de atraso derivado entre otras cosas que mi disco duro voló, por fin he decidido hacer una presentación del lenguaje de programación Ryz que llega al fin a su pre-pre-pre-Alpha release.

En esta presentación hablaré sobre las características del lenguaje y algunos aspectos sobre su origen, estado actual y siguientes pasos. Habrá claro algún ejemplo para que no sea todo teórico.

En esta presentación no hablaré sobre la implementación, en parte porque da pena y en parte porque no es la idea ( para no desilusionarse tan rápido ) Pero si no nos corren pues podemos quedarnos ahí un rato programando :)

Importante Esta es una versión pre-pre-pre-alpha y como tal tiene muchisimas "areas de oportunidad" :P, quedan advertidos.

La cita es el siguiente viernes 27 de mayo 2011 a las 8 p.m. en el mismísimo HackerRoom:

Rio Volga 80, Mezzanine 2-A
Col. Cuauhtemoc
Mexico, DF 06500

Atte:

Oscar Reyes de la Cruz
@OscarRyz
@ryz_language

Programando en Visual Basic 6 sobre Java: Jabaco

Si ya sé muchos odian VB, pero me llamó la atención este programa.

Es demasiado parecido al original VB6, salvo algunas diferencias, la más importante es que corre sobre la máquina virtual de java (necesitas instalarla antes de usarlo).

Conserva muchos de los controles clásicos como Text, List, Combo, etc. Puedes crear archivos .bas, clases, y controles.

Creo que hasta corre más rápido que el original (según yo). Tiene las mismas estructuras de control como:

  • For..Next
  • If..Then..Else
  • While...Wend
  • Select Case...

Puedes enlazar tus programas a cualquier base de datos, convertir los proyectos de VB6 a Jabaco.

Algunos ejemplos.

1. Un login muy sencillo (sin BD)

Public Sub Command1_Click()
Dim nombre, clave As String
nombre=Trim(Text1.Text): clave=Trim(Password1.Text)
If nombre = "" Or clave = "" Then
MsgBox "Usuario y/o clave no deben" & vbCrLf & "ser campos vacíos", vbCritical, "Aviso del
sistema"

Else
If nombre = "admin" And clave = "4321" Then
Form1.Close
Else
MsgBox "Usuario y/o clave " & vbCrLf & "no coinciden", vbCritical, "Aviso del sistema"
Distribuir contenido