|
|||||||
|
|
|
|||||
|
|
|||||||
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. La reducida potencia de cálculo y memoria de los electrodomésticos llevó a desarrollar un lenguaje sencillo capaz de generar código de tamaño muy reducido.
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. Desarrollan un código “neutro” que no depende del tipo de electrodoméstico, el cual se ejecuta sobre una “máquina hipotética o virtual” denominada Java Virtual Machine (JVM).
Es la JVM quien interpreta 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.
Java, como lenguaje de programación para computadores, se introdujo a finales de 1995. La clave fue la incorporación de un intérprete Java en el programa Netscape Navigator, versión 2.0, produciendo una verdadera revolución en Internet. Java 1.1 apareció a principios de 1997, mejorando sustancialmente la primera versión del lenguaje.
Al programar en Java no se parte de cero. Cualquier aplicación que se desarrolle “cuelga” (o se apoya, según como se quiera ver) en un gran número de clases preexistentes. Algunas de ellas las ha podido hacer el propio usuario, otras pueden ser comerciales, pero siempre hay un número muy importante de clases que forman parte del propio lenguaje (el API o Application Programming Interface de Java).
Java incorpora 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 es un 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.
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. Además de una serie de halagos por parte de Sun hacia su propia criatura, el hecho es que todo ello describe bastante bien el lenguaje Java.
Existen distintos programas comerciales que permiten desarrollar código Java. La compañía Sun, creadora de Java, distribuye gratuitamente el Java(tm) Development Kit (JDK). Se trata de un conjunto de programas y librerías que permiten desarrollar, compilar y ejecutar programas en Java.
Existe también una versión reducida del JDK, denominada JRE (Java Runtime Environment) destinada únicamente a ejecutar código Java (no permite compilar).
Los IDEs (Integrated Development Environment), tal y como su nombre indica, son entornos de desarrollo integrados. En un mismo programa es posible escribir el código Java, compilarlo y ejecutarlo sin tener que cambiar de aplicación.
Estos entornos integrados permiten desarrollar las aplicaciones de forma mucho más rápida, incorporando en muchos casos librerías con componentes ya desarrollados, los cuales se incorporan al proyecto o programa.
Entre los gratuitos más conocidos, se puede nombrar a la aplicación JCreator y JBuilder (Personal Edition), la primera para sistemas operativos Windows y la segunda para Windows y Linux.
Además, en el sitio web de JCreator, se encuentra el link para bajar el J2SDK, necesario para compilar y ejecutar los progranas en lenguaje java.
Bajar JCreator
Bajar JBuilder Personal
Cuando se baja JBuilder es muy importante registrar la dirección de correo electrónico en los formularios requeridos por Borland, ya que el archivo que genera la clave para usar el producto, es enviada por correo una vez comenzada la "bajada" del software.
Durante el proceso de instalación, se abrirá un formulario, en donde hay que especificar la ruta en donde se encuentra tal archivo, para continuar la instalación.
Tanto JCreator Pro y JBuilder, tienen la característica fundamental, de poder completar el código, a través del despliegue en pantalla de todos los métodos y atributos que ofrece una clase, al momento de acceder con el carácter punto.
Se trata de una de las herramientas de desarrollo incluidas en el JDK. Realiza un análisis de sintaxis del código escrito en los ficheros fuente de Java (con extensión *.java). Si no encuentra errores en el código genera los ficheros compilados (con extensión *.class). En otro caso muestra la línea o líneas erróneas. En el JDK de Sun dicho compilador se llama javac.exe. Tiene numerosas opciones, algunas de las cuales varían de una versión a otra. Se aconseja consultar la documentación de la versión del JDK utilizada para obtener una información detallada de las distintas posibilidades.
La existencia de distintos tipos de procesadores y ordenadores llevó a los ingenieros de Sun a la conclusión de que era muy importante
conseguir un software que no dependiera del tipo de procesador utilizado. Se plantea la necesidad
de conseguir un código capaz de ejecutarse en cualquier tipo de máquina. Una vez compilado no
debería ser necesaria ninguna modificación por el hecho de cambiar de procesador o de ejecutarlo
en otra máquina. La clave consistió en desarrollar un código “neutro” el cual estuviera preparado
para ser ejecutado sobre una “máquina hipotética o virtual”, denominada Java Virtual Machine
(JVM). Es esta JVM quien interpreta este código neutro convirtiéndolo a código particular de la
CPU o chip utilizada. Se evita tener que realizar un programa diferente para cada CPU o plataforma.
La JVM es el intérprete de Java. Ejecuta los “bytecodes” (ficheros compilados con extensión
*.class) creados por el compilador de Java (javac.exe). Tiene numerosas opciones entre las que
destaca la posibilidad de utilizar el denominado JIT (Just-In-Time Compiler), que puede mejorar
entre 10 y 20 veces la velocidad de ejecución de un programa.
Los nombres de Java son sensibles a las letras mayúsculas y minúsculas. Así, las variables masa, Masa y MASA son consideradas variables completamente diferentes. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten mucha libertad al programador, pero es habitual seguir ciertas normas que facilitan la lectura y el mantenimiento de los programas de ordenador. Se recomienda seguir las siguientes instrucciones:
1. En Java es habitual utilizar nombres con minúsculas, con las excepciones que se indican en los puntos siguientes.
2. Cuando un nombre consta de varias palabras es habitual poner una a continuación de otra, poniendo con mayúscula la primera letra de la palabra que sigue a otra (Ejemplos: elMayor(), VentanaCerrable, RectanguloGrafico, escucharMensaje()).
3. Los nombres de clases e interfaces comienzan siempre por mayúscula (Ejemplos: Automovil, Rectangulo, Graphics, Math, System).
4. Los nombres de objetos, los nombres de métodos y variables miembro, y los nombres de las variables locales de los métodos, comienzan siempre por minúscula (Ejemplos: main(), dibujar(), numRectangulos, x, y, r).
5. Los nombres de las variables finales, es decir de las constantes, se definen siempre con mayúsculas (Ejemplo: PI)
Los ficheros fuente tienen la extensión *.java, mientras que los ficheros compilados tienen la extensión *.class.
Un fichero fuente (*.java) puede contener más de una clase, pero sólo una puede ser public.
El nombre del fichero fuente debe coincidir con el de la clase public (con la extensión *.java). Si
por ejemplo en un fichero aparece la declaración (public class MiClase {...}) entonces el nombre del
fichero deberá ser MiClase.java. Es importante que coincidan mayúsculas y minúsculas ya que
MiClase.java y miclase.java serían clases diferentes para Java. Si la clase no es public, no es
necesario que su nombre coincida con el del fichero. Una clase puede ser public o package
(default), pero no private o protected.
De ordinario una aplicación está constituida por varios ficheros *.class. Cada clase realiza unas funciones particulares, permitiendo construir las aplicaciones con gran modularidad e independencia entre clases. La aplicación se ejecuta por medio del nombre de la clase que contiene la función main() (sin la extensión *.class). Las clases de Java se agrupan en packages, que son librerías de clases. Si las clases no se definen como pertenecientes a un package, se utiliza un package por defecto (default) que es el directorio activo.
Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables y
métodos o funciones miembro.
La programación orientada a objetos se basa en la programación de
clases. Un programa se construye a partir de un conjunto de clases.
Una vez definida e implementada una clase, es posible declarar elementos de esta clase de
modo similar a como se declaran las variables del lenguaje (int, double, String, …).
Los elementos
declarados de una clase se denominan objetos de la clase. De una única clase se pueden declarar o
crear numerosos objetos. La clase es lo genérico: es el patrón o modelo para crear objetos. Cada
objeto tiene sus propias copias de las variables miembro, con sus propios valores, en general
distintos de los demás objetos de la clase. Las clases pueden tener variables static, que son propias
de la clase y no de cada objeto.
La herencia permite que se pueden definir nuevas clases basadas en clases existentes, lo cual facilita
re-utilizar código previamente desarrollado. Si una clase deriva de otra (extends) hereda todas sus
variables y métodos. La clase derivada puede añadir nuevas variables y métodos y/o redefinir las
variables y métodos heredados.
En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólo puede derivar de
una única clase, con lo cual no es posible realizar herencia múltiple en base a clases. Sin embargo
es posible “simular” la herencia múltiple en base a las interfaces.
Una interface es un conjunto de declaraciones de funciones. Si una clase implementa (implements)
una interface, debe definir todas las funciones especificadas por la interface. Una clase puede
implementar más de una interface, representando una forma alternativa de la herencia múltiple.
Una interface puede derivar de otra o incluso de varias interfaces, en cuyo caso incorpora
todos los métodos de las interfaces de las que deriva.
Un package es una agrupación de clases. Existen una serie de packages incluidos en el lenguaje
(ver jerarquía de clases que aparece en el API de Java).
Además el usuario puede crear sus propios packages. Lo habitual es juntar en packages las
clases que estén relacionadas. Todas las clases que formen parte de un package deben estar en el
mismo directorio.