Conceptos

Conceptos generales de programación o cómputo, no necesariamente atados a una tecnología específica.

El poder de Option: Más allá del pattern matching

Una de las primeras cosas a las que le tomamos gusto cuando aprende Scala, sobre todo si venimos de Java, es al pattern matching, aunque una de las cosas que desconciertan un poco es la manera en que funcionan los mapas.

En Java, si tenemos un   simplemente le pedimos el valor para una llave, y nos devuelve el valor, o null si no lo tiene. O si el mapa acepta nulos, entonces puede devolvernos null si es que tiene null guardado bajo la llave que indicamos. ¿Cómo podemos diferenciar entre el caso en que el mapa no tiene la llave, o si tiene almacenado null bajo esa llave? Podemos verificar usando  .

Entonces, tenemos los siguientes casos:

 

Concurrencia sin dolor en Java puro, parte 3

En el post anterior ya vimos una alternativa muy buena para manejo de concurrencia en Java: el modelo de STM.

En esta tercera y última parte, veremos el modelo de actores. Esto es algo que tampoco es nuevo, viene de otros lenguajes; en la JVM, Scala es un lenguaje que incluye este modelo de concurrencia. Pero gracias a una biblioteca llamada Akka, la cual fue escrita en Scala, podemos usar el modelo en Java.

Visto de una manera muy simple, un actor es un objeto que responde (o reacciona) a mensajes que se le envían, uno a la vez. Los mensajes se le pueden enviar de manera asíncrona, un mecanismo conocido como fire-and-forget, por lo que puede haber varios hilos distintos enviando mensajes al mismo actor y dichos mensajes serán encolados para que los vaya atendiendo uno por uno.

Concurrencia sin dolor en Java puro, parte 2

En el post anterior, ya vimos lo difícil que es manejar concurrencia en Java, cuando usamos únicamente las herramientas que nos ofrece el JDK. Algunos llaman a este modelo synchronize and suffer.

En esta segunda parte, veremos una alternativa, implementada desde hace mucho tiempo en Lisp, y recientemente en Clojure, un lenguaje alterno para la JVM basado en Lisp. Este modelo de llama memoria transaccional, o STM, Software Transactional Memory.

Clojure

Clojure es un lenguaje alternativo para la JVM, basado en Lisp. En Clojure no hay variables, todo es inmutable. Sí, otra vez: en Clojure no hay variables. O si de plano no pueden concebir algo así, entonces pueden verlo de esta forma: en Clojure, todas las variables son inmutables. Es decir, una vez que asignan un valor a una variable, no se puede volver a modificar. Cuando dicen  , ya no pueden posteriormente cambiar el valor de   (por lo tanto, si ya no pueden variar, no se pueden llamar variables... se llaman valores).

Concurrencia sin dolor en Java puro, parte 1

El miércoles 7 de septiembre tuvimos el honor de recibir una plática del Dr. Venkat Subramaniam, en una sala facilitada por SynergyJ y la comunidad SpringHispano.

El tema de la plática fue cómo manejar concurrencia en Java y estuvo muy, muy interesante.

Todos sabemos que el JDK ofrece varias facilidades para manejo de concurrencia, pero son de muy bajo nivel: la palabra clave   y los Locks, principalmente. Pero aquí se nos mostró cómo muy rápidamente se pueden complicar las cosas, primero por la cantidad de código que hay que escribir, segundo porque hay que conocer muy bien el modelo de memoria de la JVM y la manera en que maneja los Threads, y tercero porque hay muchas cosas que pueden salir mal si ponemos un   en el lugar equivocado, o si olvidamos ponerlo, etc. No sólo deadlocks, sino también livelocks: cuando un hilo se queda esperando a que otro hilo libere un recurso para poder continuar. Esto realmente va en contra de la concurrencia; es un desperdicio tener hilos esperando indefinidamente a que otros hilos liberen los recursos que requieren.

Polimorfismo

El polimorfismo es quizá al característica más importante de la programación orientada a objetos y también quizá la más difícil de entender y creo que en parte se debe al nombre; no ayuda mucho y si impresiona al principio.

Pero si en vez de pensar en la palabra pensamos en como los objetos se comportan de diferente forma dependiendo de su naturaleza puede ser más claro.

Por ejemplo, en el post anterior Clases y Objetos hablaba como los objetos de nuestros sistema se pueden clasificar de acuerdo a sus atributos y comportamiento. Los objetos de la misma clase se comportan igual y los objetos de diferentes clases se comportan diferente. ¿Parece demasiado obvio verdad? Pues es que lo es.

Por ejemplo, el mecanismo de persistencia ( entiéndase, cuando voy a "salvar", o "guardar" algo ) puede utilizar una base de datos o el sistema de archivos entonces se tendrían dos clases diferentes donde cada una hiciera algo distinto.

Si tuvieramos esta clase llamada Persona:

 

Clases y Objetos

Clases y Objetos

Siendo Java un lenguaje de programación orientado a objetos, su principal artefacto son los objetos ( que conste que digo principal y no único ).

De todo lo que un objeto del mundo real tiene, en la programación orientada a objetos se tomaron las siguientes cosas:

  • Los atributos del objeto. O sea sus rasgos o características
  • La forma de modificar esos atributos, osea el método para modificar un objeto

Los conceptos fundamentales de la POO son ( entre otros ):

Abstracción No es necesario conocer TODO lo que un objeto del mundo real es para poderlo usar, basta con saber lo necesario dependiendo del problema. Ejemplo un objeto persona para un sistema de venta de boletos será diferente que un objeto persona en un sistema de control escolar.

Polimorfismo Esta palabrota no hace otra cosa más que decir que objetos diferentes se comportan diferente aunque se utilice el mismo método.

Herencia Los objetos pueden tomar las características de otros objetos.

Bueno pues basta ya de blah blah , blah...

Aquí va un ejemplo:

 

Reiniciar un Formulario en java (JavaFace)

Reinica tus formularios como lo hace el gestor de descargas JDOWLOADER descarga el proyecto y enterate como funciona tan sencillo no puede ser mas en

VIRUS ESPIA DESARROLLADO EN JAVA (JavaFace)

juégale una broma a tus amigos, a tu novia novio, obtén sus contraseñas de hotmail y de facebook y darles un buen susto sin dañar su pc descarga el proyecto con el código fuente de la aplicación en

Android y que IDE

Bueno queria quee me den un consejo si quiero empezar a programar en android que IDE me sugeririan que utilize? Netbeans o Eclipse

Saludos y gracias

Como desactivar con javaScript (Guardar contraseñas de Mozilla)

Buenas !

Necesitaria poder desactivar la opcion de guardar contraseñas de Mozilla con JavaScript.

Es posible ??

Un saludo

Distribuir contenido