martes, 5 de febrero de 2013

Entorno de desarrollo de java


" Java tiene una arquitectura neutra puesto que compila su código a un fichero objeto de formato independiente de la arquitectura de la máquina en que se ejecutará. "


Iniciarse en el lenguaje java como primer lenguaje de programación  es muy fácil en estos dorados tiempo, muchas paginas ofrecen manuales, tutoriales y mucha documentación la cual es de gran utilidad. Elegir un sistema operativo para desarrollar algún programa no es la excepción,  su arquitectura neutral diseñado para que un programa escrito en este lenguaje sea ejecutado correctamente independientemente de la plataforma en la que se esté actuando (Macintosh, PC, UNIX…entre otros). Su filosofía totalmente multiplataforma es decir que es un lenguaje sencillo, por lo que el entorno necesario para su ejecución es de pequeño tamaño y puede adaptarse incluso al interior de un navegador , la cual es la clave del éxito de este lenguaje.

Lo que necesito para programar en java

Existen distintos programas comerciales que permiten desarrollar código Java. Lo primero que necesitas es descargarte el conjunto de programas y librerías que permiten desarrollar, compilar y ejecutar programas en Java. Incorpora además la posibilidad de ejecutar parcialmente el programa, deteniendo la ejecución en el punto deseado y estudiando en cada momento el valor de cada una de las variables (con el denominado Debugger). A este conjunto se le denomina como Java Development Kit (JDK).




La plataforma Java de Sun Microsystems (adquirida por Oracle Corporation) es una excepción a la regla general de que el sistema operativo constituye la plataforma de software. El lenguaje Java provee una máquina virtual o "procesador virtual" que ejecuta cualquier código que haya sido escrito en dicho lenguaje; lo que permite que el mismo binario ejecutable se pueda usar en todos los sistemas compatibles con el software Java. Esto tiene, sin embargo, un precio: los ejecutables de Java no los puede procesar directamente el sistema operativo, sino que hace falta un programa especial, la Máquina virtual Java, que siendo ejecutada por el sistema operativo, se encargue a su vez de ejecutar esos programas. 
Por ello, Java tiene limitaciones en cuanto a admitir funcionalidades propias de cada sistema. Los programas de Java pueden ejecutarse por lo menos en los sistemas Windows, GNU/Linux, y Solaris, con lo que dicho lenguaje está limitado a las funcionalidades que existan en los tres sistemas. Esto incluye, por ejemplo, redes y sockets, pero no entrada/salida directa del hardware.


¿Quien distribuye el JDK?


OpenJDK es una de las implementaciones libres de la especificación de la plataforma Java, que funciona bajo licencia GPL, lo cual la hace idónea para ser incorporada en plataformas que se distribuyen bajo este tipo de licencia, como GNU/Linux.
El problema que había era que los programas en Java no tienen restricciones de uso y distribución, pero la máquina virtual donde corre el código compilado de ese programa sí tiene restricciones y se distribuye bajo una licencia privativa, por lo que no es incorporado en plataformas GPL. La única opción legal de utilizar dicha implementación de Java es descargándola desde el sitio oficial de Oracle-Sun.
Bueno, durante bastante tiempo se ha trabajado en diversos proyectos con el fin de proveer una implementación libre para Java, por ejemplo, los proyectos Kaffe, Harmony o GCJ; esta última permite compilar el programa fuente Java en un ejecutable en ¡código nativo!. En 2006 SUN liberó la especificación Java (JSR), lo que ha permitido una incorporación de gran cantidad de programadores a este nuevo proyecto llamado OpenJDK que surgió de ello. 
La implementación OpenJDK es diferente a la propietaria de Oracle y en algunos casos puede producir errores en los resultados obtenidos.

lunes, 4 de febrero de 2013

Conceptos de Programación Orientada a Ojetos

"En la programación orientada a objetos se
unen datos y procesos "


Programar en términos comprensibles es trata de encontrar solución a diversos problemas. Existen una serie de principios fundamentales para comprender cómo se modeliza la realidad al crear un programa bajo el paradigma de la orientación a objetos.

Características y conceptos de programación Orientada a Objetos


Principios de abstracción:
Mediante la abstracción la mente humana modela la realidad en forma de objetos. Para ello busca parecidos entre la realidad y la posible implementación de objetos del programa que simulen el funcionamiento de los objetos reales.Los seres humanos no pensamos en las cosas como un conjunto de cosas menores; por ejemplo, no vemos un cuerpo humano como un conjunto de células. Los humanos entendemos la realidad como objetos con comportamientos bien definidos. No necesitamos conocer los detalles de porqué ni cómo funcionan las cosas; simplemente solicitamos determinadas acciones en espera de una respuesta; cuando una persona desea desplazarse, su cuerpo le responde comenzando a caminar. Pero la abstracción humana se gestiona de una manera jerárquica, dividiendo sucesivamente sistemas complejos en conjuntos de subsistemas, para así entender más fácilmente la realidad. Esta es la forma de pensar que la orientación a objeto intenta cubrir.

Principio de encapsulación
El encapsulamiento permite a los objetos elegir qué información es publicada y qué información es ocultada al resto de los objetos. Para ello los objetos suelen presentar sus métodos como interfaces públicas y sus atributos como datos privados e inaccesibles desde otros objetos. Para permitir que otros objetos consulten o modifiquen los atributos de los objetos, las clases suelen presentar métodos de acceso. De esta manera el acceso a los datos de los objetos es controlado por el programador, evitando efectos laterales no deseados. Con el encapsulado de los datos se consigue que las personas que utilicen un objeto sólo tengan que comprender su interfaz, olvidándose de cómo está implementada, y en definitiva, reduciendo la complejidad de utilización.

Principios de modularidad
Mediante la modularidad, se propone al programador dividir su aplicación en varios módulos diferentes (ya sea en forma de clases, paquetes o bibliotecas), cada uno de ellos con un sentido propio.Esta fragmentación disminuye el grado de dificultad del problema al que da respuesta el programa, pues se afronta el problema como un conjunto de problemas de menor dificultad, además de facilitar la comprensión del programa.

Principios de polimorfismo
Polimorfismo quiere decir "un objeto y muchas formas". Esta propiedad permite que un objeto presente diferentes comportamientos en función del contexto en que se encuentre. Por ejemplo un método puede presentar diferentes implementaciones en función de los argumentos que recibe, recibir diferentes números de parámetros para realizar una misma operación, y realizar diferentes acciones dependiendo del nivel de abstracción en que sea llamado.

Principios de herencias
La mayoría de nosotros ve de manera natural nuestro mundo como objetos que se relacionan entre sí de una manera jerárquica. También se puede agregar que la herencias es el proceso por el cual un objeto adquiere las propiedades de otro objeto.  Por ejemplo, un perro es un mamífero, y los mamíferos son animales, y los animales seres vivos.Del mismo modo, las distintas clases de un programa se organizan mediante la jerarquías.

Principio del paso de mensajes
Mediante el denominado pasos de mensajes, un objeto puede solicitar de otro objeto que realice una acción determinada o que modifique su estado. El paso de mensajes se suele implementar como llamadas a los métodos de otros objetos. Desde el punto de vista de la programación estructurada, esto correspondería con la llamada a funciones.

Las clases
Las clases son abstracciones que representan a un conjunto de objetos con un comportamiento e interfaz común. Podemos definir una clase como "un conjunto de cosas (físicas o abstractas) que tienen el mismo comportamiento y características. Una clase no es más que una plantilla para la creación de objetos.
Las clases presentan el estado de los objetos a los que representan mediante variables denominadas atributos . Cuando se instancia un objeto el compilador crea en la memoria dinámica un espacio para tantas variables como atributos tenga la clase a la que pertenece el objeto.
Los métodos son las funciones mediante las que las clases representan el comportamiento de los objetos. En dichos métodos se modifican los valores de los atributos del objeto, y representan las capacidades del objeto (en muchos textos se les denomina servicios).
Desde el punto de vista de la programación estructurada, una clase se asemejaría a un módulo, los atributos a las variables globales de dicho módulo, y los métodos a las funciones del módulo.


Principio de Ocultación
Este principio nos dice que los datos deben protegerse dependiendo del uso que se les va a dar y el contexto en el que se este. Para dar acceso a datos se debe utilizar interfaces o funciones.
•Visibilidad:
•Privado: visto únicamente desde dentro de la misma clase. Estos no se heredan.
•Protegido: visto desde la misma clase y para las clases que la hereden.
•Publico: visto desde dentro y fuera de la clase. Este modificador permite que accedan otros objetos desde fuera.

Paradigma de la programacion en java

"La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina. "


Sin duda el problema fundamental que debe asumir un equipo de desarrollo de software es convertir el mundo real a un programa informático. En  esencia la clave de la programación es la de describir las tareas de especificación del software  que resuelve un problema dado. 
Para programar en java debemos tener en cuenta el principio que rige la forma de hacer un programa en este lenguaje. A esto se le determina como paradigma y este según su definición puede indicar el concepto de esquema formal de organización, y ser utilizado como sinónimo de marco teórico o conjunto de teorías.

Programación orientada a objetos (POO)



La programación orientada a objetos es  considerada como una extensión  natural  de la cual la tecnología de programación puede representar un enfoque nuevo y distinto  al tradicional, este trata de amoldarse al modo de pensar del hombre y
no al de la máquina, se puede describir como la  evolución lógica de la programación estructurada.


Este se basa en los conceptos de objetos y clases de objetos. Un objeto es una variable equipada con un conjunto de operaciones que le pertenecen o están definidas para ellos, de hecho simplifica el problema dividiéndolo en objetos y permitiendo centrarse en cada
objeto, para de esa forma eliminar la complejidad, en ello se resalta que dicho paradigma permite al programa  organizarse alrededor de sus datos. Cada objeto se programa de forma autónoma y esa es la principal virtud. Actualmente es el paradigma más popular y día a día los programadores, estudiantes y profesionales tratan de tomar algún curso que tenga que ver con este paradigma, podría decirse, que programar orientado a objetos está de moda.



Análisis y diseño orientado a objetos


Análisis Orientado a Objetos(AOO)
Algo fundamental y peculiar acerca de la programación orientada a objetos , es la manera de describir los detalles que constituyen el problema real. Que responde a la pregunta “¿Qué hace?”, durante esta fase de análisis se piensa en las especificaciones en términos intuitivos y con independencia del lenguaje y de la maquina. La etapa critica de esta actividad es la deducción de los tipos de objetos del mundo   que puedan modelar los atributos, comportamientos e interacciones de lo que deseamos programar.

Diseño Orientado a Objetos(DOO)
La siguiente fase de proceso de desarrollo del software es el Diseño Orientado a Objetos(DOO), que corresponde a la pregunta “¿Cómo lo hace?”. Durante esta esta fase  se crea un modelo de computadora basado en el análisis que realice la tarea especifica concreta. Parte de esta etapa es pensar como representar el objeto del mundo real al  mundo informático. Es en esta fase donde surgen los atributos utilices que se adicionan con el comportamiento del objeto  en su ejecución en el nuevo mundo virtual.

domingo, 3 de febrero de 2013

Antecedentes del lenguaje java

“Primero aprende informática y toda la teoría. Después desarrolla un estilo de programación.Entonces, olvídalo todo y hackea.”
George Carrette


Hola amigos para dar inicio a estos tutos de programación en java,  daré inicio con una breve explicación del origen de este lenguaje. Esto como forma introductoria para tener muy en cuenta los fundamentos.  Las siguientes publicaciones me enfocare en describir las herramientas necesarias para entrar de lleno en la programación. 

¿Que es el lenguaje java?

En términos muy sencillos diremos:
Para crear un programa y que la computadora interprete y ejecute las instrucciones escritas en el, se debe usar un Lenguaje de programación. Java es un lenguaje de programación y la primera plataforma informática creada por Sun Microsystems en 1995. Una de las tecnologías subyacentes que permite el uso de programas punteros, como herramientas, juegos y aplicaciones de negocios.

Su origen:
Java surgió en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de diseñar un nuevo lenguaje de programación destinado a electrodomésticos. No fue creado originalmente para la red internet. Sun Microsystems comenzó a desarrollarlo con el objetivo de crear un lenguaje, independiente de la plataforma y del sistema operativo, para el desarrollo de electrónica de consumo (dispositivos electrónicos inteligentes, como televisores, vídeos, equipos de música, etc.).

En Diciembre de 1950 Patrick Naughton, ingeniero de Sun Microsystems, reclutó a varios colegas entre ellos James Gosling y Mike Sheridan para trabajar sobre un nuevo proyecto conocido como "El proyecto verde". Con la ayuda de otros ingenieros, empezaron a trabajar en una pequeña oficina en Sand Hill Road en Menlo Park, California. Y así interrumpió todas las comunicaciones regulares con Sun y trabajó sin descanso durante 18 meses. Debido a la existencia de distintos tipos de CPUs y a los continuos cambios, era importante conseguir una herramienta independiente del tipo de CPU utilizada. Desarrollaron un código “neutro” que no dependía del tipo de electrodoméstico, el cual se ejecutaba sobre una “máquina hipotética o virtual” denominada Java Virtual Machine (JVM). Era la JVM quien interpretaba el código neutro convirtiéndolo a código particular de la CPU utilizada. Esto permitía lo que luego se ha convertido en el principal lema del lenguaje: “Write Once, Run Everywhere”. A pesar de los esfuerzos realizados por sus creadores, ninguna empresa de electrodomésticos se interesó por el nuevo lenguaje.


Como lenguaje de programación para computadores, Java se introdujo a finales de 1995. La clave fue la incorporación de un intérprete Java en la versión 2.0 del programa Netscape Navigator, produciendo una verdadera revolución en Internet. Java 1.1 apareció a principios de 1997, mejorando sustancialmente la primera versión del lenguaje. Java 1.2, más tarde rebautizado como Java 2, nació a finales de 1998. Java incorpora en el propio lenguaje muchos aspectos que en cualquier otro lenguaje son extensiones propiedad de empresas de software o fabricantes de ordenadores (threads, ejecución remota, componentes, seguridad, acceso a bases de datos, etc.). Por eso muchos expertos opinan que Java es el lenguaje ideal para aprender la informática moderna, porque incorpora todos estos conceptos de un modo estándar, mucho más sencillo y claro que con las citadas extensiones de otros lenguajes. Esto es consecuencia de haber sido diseñado más recientemente y por un único equipo. El principal objetivo del lenguaje Java es llegar a ser el “nexo universal” que conecte a los usuarios con la información, esté ésta situada en el ordenador local, en un servidor de Web, en una base de datos o en cualquier otro lugar.
Java es un lenguaje muy completo (de hecho se está convirtiendo en un macro-lenguaje: Java 1.0 tenía 12 packages; Java 1.1 tenía 23 y Java 1.2 tiene 59). En cierta forma casi todo depende de casi todo. Por ello, conviene aprenderlo de modo iterativo: primero una visión muy general, que se va refinando en sucesivas iteraciones. Una forma de hacerlo es empezar con un ejemplo completo en el que ya aparecen algunas de las características más importantes. La compañía Sun describe el lenguaje Java como “simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinámico”.