Breve Historia de Java
Breve Historia de Java
Breve Historia de Java
Surge como un proyecto de Sun Microsystems en 1991 (The Green Project), su creación se le atribuye
a James Gosling. James lo nombró Oak debido a un roble que tenía a la vista desde su ventana en las
oficinas de Sun, pero debido a que ya existía una marca registrada con ese nombre, un grupo de gente
de Sun, en una cafetería local, decidió renombrarlo a Java, que es una variedad de café (Ésta es la
hipótesis que más fuerza tiene y por la que JAVA debe su nombre).
Java es un lenguaje de programación, creado por la empresa SUN Microsystems, Inc. SUN, ofreció la
mayoría de la tecnología Java, bajo licencia GNU. Esto significa, que cualquiera puede usarla sin pagar.
Las universidades, comunidades de desarrolladores o empresas pueden desarrollar tecnología sin tener
que pagar ni ahora ni en el futuro.
Esto tiene una gran ventaja para el desarrollador. Menos dinero en licencias, es potencialmente más
dinero para el programador. Para darles una idea, los lenguajes Java y C# son similares, pero los
programadores Java, suelen estar mejor pagados.
Mucho del código escrito en java es de código abierto. Esto permite a muchos mejorar el código.
Para ver la importancia del código abierto, pensemos en una librería de código cerrado utilizada por
miles de programadores. Probablemente haya sido vista, revisada y mejorada por uno o unos pocos en
un periodo limitado de tiempo.
Si la librería es de código abierto, muchísimas personas pueden leer el código, corregirlo, actualizarlo y
mejorarlo. En definitiva la librería es de más calidad.
2. Si desarrollas usando como pieza crítica un componente de un tercero, si éste falla puedes
arreglarlo en vez de quitar el componente y rehacer todo tu código.
Java es multiplataforma
Escribirlo una vez, ejecútalo donde sea (Write once, run anywhere WORA). Así se publicitaba la
capacidad que tiene Java de ejecutarse en cualquier máquina. Aunque esto ha sido muy discutido, es un
hecho que Java es ampliamente usado en la mayoría de las plataformas.
El primer gran éxito de Java, fue en el desarrollo de aplicaciones Web, aunque también es estándar en
muchas otras industrias como medicina, redes y telefonia.
Su último gran salto es el sistema operativo Android para teléfonos inteligentes, tablets y otros gadgets.
Android ya tiene más de un billón de activaciones en su corta vida. Android tiene el potencial de
convertirse en el nuevo sistema operativo más usado, desplazando a Windows. Android usa a Java como
una de sus piezas fundamentales.
El ecosistema Java
Existen muchas empresas, organizaciones y grupos de personas, llamados "comunidades" que aportan
al enriquecimiento y desarrollo de las tecnologías Java. Todos estos entes conforman lo que se conoce
como "el ecosistema Java".
Este ecosistema nos da muchas opciones, por lo que muchas veces nos veremos obligados a tener que
elegir.
Java no es sólo un lenguaje. Es una plataforma de desarrollo de software. Sus distribuciones contienen
múltiples librerías y herramientas.
Cuando se programa en Java no se inicia desde cero. Se utilizan paquetes de clases, creados
previamente conocidos comolibrerías. Java viene con muchas librerías incluidas que se conocen como el
"API Java". El API Java tiene facilidades para; la programación concurrente, manejo de redes y
programación distribuida, seguridad, interfaz gráfica y mucho más.
Antes de programar una funcionalidad es bueno investigar si ya existe una librería que la implemente. Es
sorprendente la cantidad y calidad de librerías gratuitas que hay para Java.
Un Framework es un conjunto de librerías y herramientas que nos ayudan a crear software. La elección
del Framework dependerá del tipo, tamaño y requerimientos de aplicación a desarrollar. Los
frameworks suelen estar especializados en resolver los problemas de un tipo específico de aplicaciones.
También es una opción válida no usar ningún framework. Esto suele ser cierto si la aplicación es muy
pequeña o tan específica que no hay framework que se adapte bien.
Una vez, hace mucho tiempo, desarrollé un sistema de transmisión de datos entre aplicaciones
Mainframe y aplicaciones Web Windows. Yo elegí usar una librería recomendada por Microsoft. Este
sistema de transmisión era usado por muchas aplicaciones web de un gran banco.
Tiempo después de que las aplicaciones estaban en producción, se descubrió un defecto en esta librería.
La librería tomaba cada vez más memoria haciendo que el servidor Web IIS cayera, afectando a más de
mil usuarios de nuestra aplicación y otras.
Mi empresa tenía contratado el soporte de Microsoft. La respuesta del soporte de Microsoft fue que la
librería había sido discontinuada y que no se prestaba ningún tipo de soporte.
Tuvimos que rehacer la librería y modificar muchas aplicaciones. Incluso para una aplicación muy
costosa de modificar se instruyó a mantenimiento para que reiniciarán el servidor todas las noches.
A partir de ese día empezó mi interés en quién es quién en la industria, los estándares y las interfaces
abiertas. Fue una forma dura de aprender el valor del código abierto (Open Source).
Hemos mencionado a Apache Software Foundation ASF, que creó Tomcat. ASF es una organización, sin
fines de lucro, que desarrolla software de código abierto para el bien público. Parece utópico, pero en
mi experiencia, no conozco organización más altruista.
Muchos de los proyectos ASF, son piezas fundamentales del ecosistema Java, como; Tomcat, Maven,
Ant, Axis2, Xerces2 y más.
En una segunda categoría, tenemos empresas con fines de lucro comprometidas con estándares y
códigos abiertos. A estas empresas, la comunidad de programadores, les reconoce cierta ética, aunque a
veces es puesta en duda.
Por último tenemos el lado oscuro. Empresas que en su historia y repetidas veces no han tenido dudas
en perjudicar a la comunidad, clientes y competidores por intereses propios. En este grupo destacan
Oracle y Microsoft.
BEA WebLogic era una empresa que competía con Oracle. Oracle la compró, subió el coste de licencias
de todos los clientes de BEA WebLogic y les informó que debían migrar a los productos Oracle ya que
sino perderían el soporte.
Después de adquirir SUN, Oracle demandó a Google por el uso de Java en Android. Para alegría de la
comunidad Java Oracle perdió el juicio. Se entendía que esta demanda ponía en peligro el uso de java en
más de un billón de dispositivos.
Java es quizás el lenguaje de programación más usado. Es uno de los mejor pagados. Uno de los que
abarca más campos y tipos de dispositivos: web, juegos, teléfonos, televisores, tomógrafos computados,
etc.
Podemos pensar en java, como un lenguaje común entre diferentes sistemas operativos, dispositivos,
industrias y programadores.
Además, es un lenguaje moderno y potente, de alta productividad. Esta productividad, permite a una
sola persona o pequeño grupo, realizar programas que antes sólo podían ser realizados por grandes
compañías.
Java es software libre
Java es un lenguaje de programación, creado por la empresa SUN Microsystems, Inc. SUN, ofreció la
mayoría de la tecnología Java, bajo licencia GNU. Esto significa, que cualquiera puede usarla sin pagar.
Las universidades, comunidades de desarrolladores o empresas pueden desarrollar tecnología sin tener
que pagar ni ahora ni en el futuro.
Esto tiene una gran ventaja para el desarrollador. Menos dinero en licencias, es potencialmente más
dinero para el programador. Para darles una idea, los lenguajes Java y C# son similares, pero los
programadores Java, suelen estar mejor pagados.
Mucho del código escrito en java es de código abierto. Esto permite a muchos mejorar el código.
Para ver la importancia del código abierto, pensemos en una librería de código cerrado utilizada por
miles de programadores. Probablemente haya sido vista, revisada y mejorada por uno o unos pocos en
un periodo limitado de tiempo.
Si la librería es de código abierto, muchísimas personas pueden leer el código, corregirlo, actualizarlo y
mejorarlo. En definitiva la librería es de más calidad.
2. Si desarrollas usando como pieza crítica un componente de un tercero, si éste falla puedes
arreglarlo en vez de quitar el componente y rehacer todo tu código.
Java es multiplataforma
Escribirlo una vez, ejecútalo donde sea (Write once, run anywhere WORA). Así se publicitaba la
capacidad que tiene Java de ejecutarse en cualquier máquina. Aunque esto ha sido muy discutido, es un
hecho que Java es ampliamente usado en la mayoría de las plataformas.
El primer gran éxito de Java, fue en el desarrollo de aplicaciones Web, aunque también es estándar en
muchas otras industrias como medicina, redes y telefonia.
Su último gran salto es el sistema operativo Android para teléfonos inteligentes, tablets y otros gadgets.
Android ya tiene más de un billón de activaciones en su corta vida. Android tiene el potencial de
convertirse en el nuevo sistema operativo más usado, desplazando a Windows. Android usa a Java como
una de sus piezas fundamentales.
Estructura de java
Explicando lo anterior:
Package: Un package es una agrupación de clases. Es parecido a una "caja"
que contiene las clases que queramos mantener en un solo lugar. También
podría decirse que los packages es el equivalente a las librerías en otros
lenguajes. Esta parte del código no es obligatoria, es sólo si lo necesita usar
nuestro programa.
Las variables de instancia :Son las que se usan para guardar valores o
atributos de un objeto en particular.
Las variables de clase: Son las que guardan valores o atributos de la clase.
Las variables locales :Son las que se declaran en una función o método y
solamente las puede utilizar esa función o método, de ahí el nombre de
locales.
Constructores: Los constructores son la forma de crear los objetos.
Métodos: En Java los métodos son los que utilizamos para realizar alguna
tarea en específico. Podemos decir que hay dos tipos de métodos en Java: El
primero, que llamaremos set (poner) sirve para manipular y/o fijar valores en
las variables, por ejemplo: cuando especificamos que el balón va a ser color
blanco. El segundo, denominado get (obtener) sirve para obtener un valor de
una variable, por ejemplo: cuando queremos saber la edad de Juan.
• Clases
• Interface
Las clases son un pilar fundamental de la programación orientada a objetos. Permiten abstraer los datos
y sus operaciones asociadas al modo de una caja negra. Los lenguajes de programación que soportan
clases difieren sutilmente en su soporte para diversas características relacionadas con clases. La
mayoría soportan diversas formas de herencia. Muchos lenguajes también soportan características para
proporcionar encapsulación, como especificadores de acceso.
class Nombre
{
// Variables miembro
miembro_1; //lista de miembros
miembro_2;
miembro_3;
// Funciones o métodos
funcion_miembro_1( ); // funciones miembro conocidas
funcion_miembro_2 ( ); // funciones como métodos
Campos de datos.Los campos de datos se utilizan para contener datos que reflejan el estado de
la clase. Los datos pueden estar almacenados en variables, o estructuras más complejas, como structs,
uniones e incluso otras clases.
Habitualmente, las variables miembros son privadas al objeto (siguiendo las directrices de diseño del
Principio de ocultación) y su acceso se realiza mediante propiedades o métodos que realizan
comprobaciones adicionales.
tipo Propiedad
get {
set {
Ventajas
....
Modificador acceso puede ser una clase de objetos que nos permite utilizar
herencia en abstracción constante en las clases en las que se implemente.
Una clase puede implementar varias interfaces de los paquetes que se han
importado dentro del programa, separando los nombres por comas.
Ejemplo
interface Nave {
posActualx = posActualx - x;
posActualy = posActualy - y;
...
Uso de paquetes
package java.awt.event;
Para usar un paquete dentro del código se usa la declaración import. Si sólo
se indica el nombre del paquete, se importarán todas las clases que contiene:
import java.awt.event.*;
Si además del nombre del paquete se especifica una clase, sólo se importa
esa clase:
import java.awt.event.ActionEvent;
Para Windows tenemos dos opciones: i586 y x64. i586 es para las versiones
de windows de 32 bits y el x64 para las de 64 bits. La versión i586, también
funciona con windows 64 bits ya que el sistema operativo mantiene una
compatibilidad con las versiones anteriores.
A este directorio se lo suele llamar “Java Home”. Dentro de Java Home, hay
un directorio bin, que contiene los ejecutables de las herramientas del JDK.
Windows
Windows 10 y Windows 8
Windows 7
Windows XP
Mac OS X
Para ejecutar una versión de Java distinta, especifique la ruta completa o
utilice la herramienta java_home:
Solaris y Linux
Es una serie de normas de realizar las cosas de manera que otras personas
puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el
código se pueda reutilizar.
Características:
La abstracción: Consiste en la generalización conceptual de un determinado
conjunto de objetos y de sus atributos y propiedades, dejando en un segundo
término los detalles concretos de cada objeto. ¿Qué se consigue con la
abstracción? Bueno, básicamente pasar del plano material (cosas que se
tocan) al plano mental (cosas que se piensan).
Clases Abstractas.
La imagen es muy fácil de identificar, con base a ella podemos crear una
clase persona, o la
clase hombre, humano entre otras, pero obviamente vemos que la imagen no
tiene elementos como ojos, nariz, boca, rostro en general, ni dedos, pies,
manos o cuello....... pero entonces porque decimos que es una
persona?.........Precisamente aquí estamos aplicando el concepto de
abstracción, ya que nos fijamos en lo mas representativo de algo, en este
caso vemos que se tiene una cabeza, tronco, brazos y pies, con esto es
suficiente para saber que es una persona sin fijarnos en los detalles
mencionados anteriormente.
Protegido (Protected): Podemos decir que estás no son de acceso público, solamente son accesibles
dentro de su clase y por subclases.
Privado (Private): En este nivel se puede declarar miembros accesibles sólo para la propia clase.
La herencia: Se aplica sobre las clases. O sea, de alguna forma las clases
pueden tener descendencia, y ésta heredará algunas características de las
clases "padres". Si disponemos las clases con un formato de árbol
genealógico, tenderemos lo que se denomina una estructura jerarquizada de
clases.
La herencia se implementa mediante un mecanismo que se denomina
derivación de clases: las superclases pasan a llamarse clases base, mientras
que las subclases se constituyen en clases derivadas. El mecanismo de
herencia está fuertemente entroncado con la reutilización del código en OOP.
Una clase derivada posibilita, el fácil uso de código ya creado en cualquiera
de las clases base ya existentes.
Dado que antes hemos dicho que un objeto también ocupa un espacio de
memoria: ¿en qué se parecen y en qué se diferencia un objeto de una
variable? Consideraremos que las variables son entidades elementales: un
número, un carácter, un valor verdadero o falso… mientras que los objetos
son entidades complejas que pueden estar formadas por la agrupación de
muchas variables y métodos. Pero ambas cosas ocupan lo mismo: un
espacio de memoria (que puede ser más o menos grande).
En Java diferenciamos dos tipos de datos: por un lado, los tipos primitivos,
que se corresponden con los tipos de variables en lenguajes como C y que
son los datos elementales que hemos citado. Por otro lado, los tipos objeto
(que normalmente incluyen métodos).
RANGO
NOMBRE TIPO OCUPA
APROXIMADO
byte Entero 1 byte -128 a 127
short Entero 2 bytes -32768 a 32767
2. ¿Para qué tener esa aparente duplicidad entre tipos primitivos y tipos
envoltorio? Esto es una cuestión que atañe a la concepción del lenguaje de
programación. Tener en cuenta una cosa: un tipo primitivo es un dato
elemental y carece de métodos, mientras que un objeto es una entidad
compleja y dispone de métodos. Por otro lado, de acuerdo con la
especificación de Java, es posible que necesitemos utilizar dentro de un
programa un objeto que “porte” como contenido un número entero. Desde el
momento en que sea necesario un objeto habremos de pensar en un
envoltorio, por ejemplo Integer. Inicialmente nos puede costar un poco
distinguir cuándo usar un tipo primitivo y cuándo un envoltorio en situaciones
en las que ambos sean válidos. Seguiremos esta regla: usaremos por norma
general tipos primitivos. Cuando para la estructura de datos o el proceso a
realizar sea necesario un objeto, usaremos un envoltorio.
5. Hay distintos tipos primitivos enteros. ¿Cuál usar? Por norma general
usaremos el tipo int. Para casos en los que el entero pueda ser muy grande
usaremos el tipo long. Los tipos byte y short los usaremos cuando tengamos
un mayor dominio del lenguaje.
Concepto de array: serie de elementos, cada uno de los cuales lleva asociado
un índice numérico 0, 1, 2, 3, … , n-1