Conceptos
JDK 8 y el proyecto Lambda
El próximo año Oracle planea liberar la versión 8 del JDK, que entre las novedades incluidas está el proyecto lambda. Dicho proyecto trae un par de características ampliamente usadas en el mundo de la programación funcional: los closures (clausuras) y las funciones anónimas.
En este post repasamos éstos conceptos y mostramos como sería la versión que Oracle esta cocinando, y aunque todavia falta un tiempo para la versión final y pueden haber cambios, las bases ya estan puestas y podemos darnos una idea.
El propósito de las funciones anónimas( también conocidas como expresiones lambda ) es muy simple: crear y usar funciones sin necesidad de asignarles un nombre o identificador, de manera que puedan ser usadas para componer o complementar otras funciones.
Modificado el ejemplo original escrito en java "tradicional", la idea es obtener una lista de discos si tienen canciones "ranqueadas" con mas de 4 puntos.
Comprehensiones en Ceylon
Las comprehensiones (o algo que se les parezca) son una característica ya prácticamente obligatoria en los nuevos lenguajes, al menos si quieren ser considerados cool. Y Ceylon no se queda atrás.
Las comprehensiones en Ceylon funcionan usando una variante especial de
, la cual acepta una sola expresión, en vez de un bloque de código. La expresión puede ser a su vez otro
, o bien un
, que actúa como un filtro, o cualquier otra expresión que devuelva algún valor. Todo eso termina siendo azúcar sintáctica para crear y devolver un objeto
que se puede pasar en invocaciones a métodos o funciones que esperan argumentos secuenciados (de los que terminan con elípsis), o usarse directamente en cualquier lugar donde se pueda usar un
.
Esto a fin de cuentas puede ser más poderoso que tener métodos como
y
en las colecciones, y además permite hacer implementaciones más eficientes, ya que los iteradores intermedios involucrados se van utilizando conforme se necesitan, en vez de tener que procesar completamente una colección antes de pasar a la siguiente fase.
Si usan Groovy o Scala, puede que ya estén familiarizados con algunas de estas operaciones. Por ejemplo, tomar una lista de palabras y devolverlas en reversa:
Iniciando con los Juegos en J2ME
Uso de Sprite
Comenzaremos en el mundo de los juegos, de los mas sencillos a los mas complejos, y esta es una de las clases mas importantes, y que combinada con otras clases nos darán mas control y funciones sobre nuestros juegos.
Un Sprite es una Imagen con secuencias de fotogramas o imágenes en donde un personaje aparece en varias posiciones o realizando una acción paso a paso, y esto nos ayuda a realizar la animación en nuestros dispositivos. En vez de cargar cada imagen por separado se carga una sola y la clase Sprite facilita los métodos para movernos de fotograma en fotograma.
Imagenes
Codigo
Clase Principal
Tutorial para instalar Oracle en Linux
No es el texto definitivo (es una verdadera lata instalarlo).
Creo que servira mas si escribo el historial de la instalacion, asi el que lo lea, no cometera los mismos errores.
Estoy tratando de instalar Oracle 11g en mi computadora que tiene la siguiente configuracion:
- Procesador AMD TurionTM II Dual-Core Mobile M500.
- RAM 4 gb.
- Disco duro Sata con 500 gb.
- Sistema operativo Ubuntu 10.
- VirtualBox 4.0.2
El proposito de instalar Oracle es poder recordar SQL y PL/SQL, tambien crear una instancia de linux lo mas basica posible, en donde exista solamente lo minimo necesario para ejecutar Oracle, por lo tanto se va a instalar en la maquina virtual:
- Ubuntu 11 server 64 bits.
- Oracle 11g v2 64 bits.
- XFCE 4.
- Gnome Terminal.
- GEdit.
La maquina virtual se configurara con 1.5 gb de RAM y 16 gb en disco duro.
Observaciones:
Esta es una lista de los errores que ha marcado el instalador, se indica en que numero de instalacion lo marco:
- Primera instalacion:
Funciones en Ceylon, segunda parte
En mi post anterior, hablé acerca de las funciones de orden superior, la manera en que se pasan referencias a métodos, cómo se invocan, etc. Pues bien, ha habido bastante progreso en Ceylon, en varias áreas, y una de las que considero importantes es precisamente el manejo de funciones; algunas de las cosas que mencioné en ese post han cambiado, mientras que ha surgido funcionalidad nueva que no estaba disponible previamente. Así que veamos los cambios:
Callables
Primero que nada, ya no tenemos la restricción de que un
no podía ser invocado; ahora ya se puede, por lo que esto ya es válido:
La otra forma sigue siendo igual de válida:
Argumentos por nombre
En Ceylon hay dos formas de hacer una invocación: usando argumentos posicionales (que es la manera en que todo mundo está acostumbrado a hacerlo) o usando argumentos nombrados (que no todos los lenguajes tienen y los que lo tienen, usan distintas sintaxis).
Refactoring para entender mejor
TD;DR; Ver el antes y después hasta abajo
Ya tenía tiempo sin postear así que ahí va un ejemplo de refactoring y como se puede usar para entender mejor código legado.
No importa mucho lo que el código hace ( guarda recetas de cocina ), el objetivo es mostrar como un método que hace una sola cosa a la vez es más fácil de entender, que uno que hace varias a la vez.
Para leer mejor este post hay que buscar solamente el código que esta comentado ( que se esta eliminando o moviendo ) y el comentario que dice //<-- aqui que es el que lo reemplaza.
Espero les sea de ayuda
Inicio ( no lo lean, nomas véanlo )
Cosas del Core de Java que debes saber.
Hace tiempo me hablaron de una empresa para hacerme una entrevista, y como era una empresa que si me llamo la atención empece el proceso de selección hasta que llego el tan esperado momento de: "¿Podemos concertar una entrevista para que nuestro experto te haga algunas preguntas?" La respuesta ya la conocen y cuándo termino con el cuestionario recordé que algunas de preguntas ya las conocía de tiempo atrás, las cuales no tienen desperdicio y les comparto aquí traducidas, y al final del texto dejo el link del texto "original".
¿Cuál es un objeto inmutable en Java? ¿Se puede cambiar los valores de un objeto inmutable?
(HashMap - data binding - JFace) en RCP
Quiero hacer un dataBinding entre la información que tiene un HashMap y los SWT-JFace Viewers
He visto que se maneja con un
(pq mi HashMap es una propiedad de mi clase, no me interesan los demás) un
para los UI y se ligan con un
.
Pero en sí, me confunden estos términos:
- WritableValues
- IObservableValue
- IObservableMap
- ContentProvider
- ObservableMapLabelProvider
El concepto que tengo es: Un JFace se une con un Pojo (una de sus propiedades) con un DataBindingContext (que se hace en un JFace - UI)
Pero no entiendo el dataBinding con los Maps, ni el concepto de los Providers ni de los Viewers.
Me podrían ayudar y poner un ejemplo para poder configurar este binding entre un componente UI y un PojoProperties?
Saludos
- Hepale's blog
- Inicie sesión o regístrese para enviar comentarios
Aclaracion de duda sobre concepto de referencia
Hola
Soy nueva en el foro, estoy estudiando para una certificacion OCJA, y me surgio una duda de concepto que ojala ustedes me pudieran resolver.
He leido que el paso de parametros a un metodo puede ser por valor o referencia, siendo los primitivos por valor, y los objetos por referencia
se que cuando el paso es por valor, se hace una copia de la variable (o valor de la variable) y por lo tanto cuando se sale del metodo, el valor original de la variable no fue afectado, sin embargo cuando se pasa un objeto, el valor de la variable SI se ve afectado en todo momento.
Se me ocurrio entonces que podia pasar a un metodo, una variable tipo Integer, porque finalmente es una variable int envuelta en formato objeto, sin embargo para mi sorpresa.. al salir del metodo, veo que la variable imprime el valor original, como si se tratase de un primitivo...
Me podrian decir porque pasa esto??
Anexo mi pedacito de codigo para ejemplificar mejor
Gracias
Funciones de orden superior en Ceylon
Ceylon tiene una característica que en lo personal me parece muy atractiva, algo que en otros lenguajes anuncian con gran fanfarria pero en Ceylon no se ha hecho tanto barullo. Es algo que creo que ayudará mucho para el diseño de APIs en el futuro cercano. Se trata de las funciones de orden superior.
Visto de manera simple, las funciones de orden superior son funciones que reciben otras funciones como parámetros, o bien que devuelven funciones como valor de retorno. El concepto realmente no es complejo; el truco en lenguajes de tipado estático está en que la sintaxis no sea compleja (en lenguajes dinámicos es muy sencillo pasar una referencia si no se tiene que indicar el tipo de retorno de la función, ni su número ni tipo de argumentos).
Una cosa muy necesaria para poder manejar funciones de orden superior en un lenguaje de tipado estático, es tener un tipo que las represente. En el caso de Ceylon, tenemos la clase
. Podemos usar este tipo para guardar la referencia a un método de un objeto por ejemplo. Suponiendo que tuviéramos una clase
con un método
que reciba un entero y devuelva un string, entonces podemos hacer esto:
Ojo, no es lo mismo
(lo cual es una invocación al método) que
, que es simplemente obtener la referencia a ese método; a partir de entonces se puede manejar como una función.