Mostrando las entradas con la etiqueta web. Mostrar todas las entradas
Mostrando las entradas con la etiqueta web. Mostrar todas las entradas

04 abril 2012

Amber Smalltalk

Después de mucho tiempo volvi a ver el blog de James Robertson, donde me encontre con Amber Smalltalk: una implementación de Smalltalk hecha en JavaScript.

Seguramente la pregunta práctica es: ¿A quien le puede interesar interpretar Smalltalk con JavaScript?

Más alla de la respuesta obvia de: a los fanáticos de Smalltalk; hay algunos buenos casos donde Amber resulta interesante:

<modalidad-fanatico-smalltalk>
  • Enseñanza: Uno puede incrustar un classbrowser junto con una pagina tutorial, y usarlo para dar clases de programación orientada a objetos: los alumnos solo necesitan un browser.
  • Producción: Si existiesen las herramientas apropiadas, uno podría usar un entorno de objetos para desarrollar y luego exportar todo a un JavaScript minimizado y listo para usar con NodeJS o en un browser. (El gran obstáculo: las diferencias de sintaxis JavaScript/Smalltalk, JObjectProxy luce feo para quienes están acostumbrados al encadenamiento de mensajes en jQuery o el syntax sugar de CoffeScript).
</modalidad-fanatico-smalltalk>

De vuelta en mi modalidad realista.

Por ahora es un lindo experimento para ver, que demuestra una vez más como JavaScript se esta convirtiendo en el "assembler" de la web. 

Hay dos características de Smalltalk que lo convierten en un lenguaje unico, y son también su maldición:
  1. El "ambiente de objetos". Para que cualquiera que haya trabajado un tiempo considerable con Smalltalk volver a los archivos y las herramientas de build es como volver a la pre-historia.
    Sin embargo es una maldición por que aparta al lenguaje de todo el resto del mundo: usar herramientas existentes de versionado o editores comunes se vuelve doloroso y poco práctico.
  2. La sintaxis de message keywords es una camino de ida :)  y es una de las cosas que más extraño en otros lenguajes orientados a objetos: realmente ayuda a pensar en términos de objeto/mensaje.
    El lado negativo es que la diferencia de sintaxis complica la interoperabilidad con lenguajes tipo C como JavaScript.
    Creo que en este sentido los smalltalkers fueron muy conservadores: la sintaxis de Smalltalk es uniforme y genera cierto orgullo. Orgullo que debería dejarse de lado: las características menos elegantes de Groovy o Ruby resultan mucho más prácticas.
Mientras tanto voy observando la evolución de Dart, quien sabe quizas con sus snapshots logre lo que Smalltalk no pudo: lograr una tregua entre el ambiente de objetos y las herramientas basadas en archivos.

17 febrero 2012

Setup de una aplicación web java en 3 lineas

A veces necesito hacer pequeños proyectos web con Java, quizás para probar algo a aprender un API. El problema -común en Java- es que hasta lo más simple requiere muchos pasos de configuración.

Algunas alternativas para hacer rapidamente un proyecto web son Maven y sus "arquetypes",  NetBeans, Eclipse o Idea con los plugins correctos y un Tomcat instalado.

En este post quería contarles una alternativa que me resulta muy sencilla y util, ahi va la receta:

1. Instale Groovy y Gradle (solo es necesario hacerlo una vez).

2. Cree un directorio para el projecto siguiendo la misma convención de Maven:

mkdir -p prueba/src/main/webapp

3. Agregue una pizca de Gradle

echo 'apply plugin: "jetty"' > prueba/build.gradle

4. Cocine:

cd prueba && gradle jettyRun

Ok, es una aplicación web vacía, pero podes agregar los HTML que necesites dentro de  src/main/webapp (si usaste Maven la convención de directorios de Gradle es la misma).

Ahi va todo junto para que puedas hacer copy & paste (técnicamente son "4 lineas" pero el número 3 quedaba mejor para el titulo :) ):

mkdir -p prueba/src/main/webapp
echo 'apply plugin: "jetty"' > prueba/build.gradle
cd prueba && gradle jettyRun

... una cosita más...

Si necesitas usar Eclipse o Idea, agrega estas lineas a build.gradle:

apply plugin: 'eclipse'
apply plugin: 'idea'

Después ejecutas:

gradle eclipse idea

y listo!