java


HISTORIA DE JAVA

El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compañía Oracle) y publicado en 1995 como un componente fundamental de la plataforma Java de Sun Microsystems.
Java actualmente puede ser considerado uno de los lenguajes más extendido y usado del mundo, pero esto no siempre fue así. ¿Cual es la historia de Java?Para hablar de la historia de java, primero debemos remontarnos a los años 80, donde podía considerarse el lenguaje por antonomasia. Era un lenguaje versátil, que podía actuar a bajo nivel y resolvían problemas muy complejos. Era la cima de la programación estructurada, para resolver estos complejos algoritmos, se generaban grandes procedimientos con un código muy complicado de mantener a largo plazo. Por ello empezó a surgir como alternativa la programación orientada a objetos, y con ella nació C++. Entonces, ¿por qué surgió Java?
Java nace en 1991 con  el nombre OKA posteriormente cambiando por green por problemas  legales , y finalmente con la denominación actual JAVA.


QUE ES JAVA

java es un lenguaje de programación y plataformas informáticas,Hay muchas aplicaciones con sitios web que deben descargar o utilizar java para que le sirva en el ordenado web.tambien java es un lenguaje rápido, fiable  y seguro, en java se puede hacer muchos programas como mysql,php,java web,
css,html, asp entre otras aplicaciones etc,


package trabajador;
import javax.swing.JOptionPane;
public class Trabados {
public int hrt;
public int suel;
public int turno;
public String nombre;
public int r;
public void ingresedatos(){
nombre=JOptionPane.showInputDialog("ingrese su nombre");
turno=Integer.parseInt(JOptionPane.showInputDialog("ingrese en que horario trabajo 1=diurno, 2=nocturno"));
hrt=Integer.parseInt(JOptionPane.showInputDialog("ingrese el numero total de hora"));

}
public int cal(){


r=(10*hrt);
return r;
}
public int cal1(){


r=(15*hrt);
return r;
}


public static void main(String[] args) {
Trabajador p=new Trabajador();
p.ingresedatos();

if(p.turno==1)
{

JOptionPane.showMessageDialog(null,"sr: "+p.nombre +"\nsu sueldo es:"+p.cal());

}
else{


if(p.turno==2)
{
JOptionPane.showMessageDialog(null,"sr: "+p.nombre+"\nsu sueldo es:"+p.cal1());
}
}

}
}


PARA QUE SIRVE

java sirve en el desarrollo de programas y aplicaciones java es una tecnología utilizada para desarrollar diversos programas y aplicaciones; muchas de las aplicaciones de dispositivos móviles como el teléfono inteligentes, tablet, y otros dispositivos móviles etc... 
usan tecnología java para funcionar.Esto es mas patente en aplicación destinada a la navegación por Internet, en donde entra en servicios como plugin, instalable en la computadora u otros dispositivos , para la mejor ejecución de programas y aplicaciones en las que se pueden encontrar  varios juegos, para poder ejecutar varios servicios de chat y diversas paginas online.
java ayuda en la navegación web muchas paginas web se basan en java por tanto sise carece de java en la computadora o en algún otros dispositivos que puedan navegar por Internet, esas paginas que están hechas de tecnologías , no se ejecutaran correctamente.para ellos se instalan plugin , ya que java no se puede instalar como un programa independiente por separado , sino como complemento para ciertas aplicaciones.

PACKAGES EN JAVA


Los paquetes en Java (packages) son la forma en la que Java nos permite agrupar de alguna manera lógica los componentes de nuestra aplicación que estén relacionados entre sí Los paquetes permiten poner en su interior casi cualquier cosa como: clases, interfaces, archivos de texto, entre otros. De este modo, los paquetes en Java ayudan a darle una buena organización a la aplicación ya que permiten modularizar o categorizar las diferentes estructuras que componen nuestro software.

COMO CREAR  PACKAGES EN JAVA

Ya sabemos para qué sirven los paquetes en Java y sus características principales. Vamos ahora a aprender cómo usarlos y qué cambios generan estos en la estructura de nuestro proyecto.Para declarar un paquete en Java se hace uso de la palabra reservada "package" seguido de la "ruta" del paquete, como se muestra a continuación.


EJEMPLO DE PACKAGES EN JAVA

A continuación pondré la declaración de cuatro clases diferentes en paquetes diferentes, cada clase se llamará "Clase_1", "Clase_2", "Clase_3" y "Clase_4" respectivamente. Voy a jugar un poco con las carpetas donde quedará alojada cada una de las clases para que afiances un poco más el concepto y comprendas bien el funcionamiento de los paquetes en Java y quizá soluciones alguna duda. Por tal motivo, te invito a intentar descifrar la ubicación exacta de cada clase al interior del proyecto según la declaración de su respectivo paquete y ver que sí hayas entendido adecuadamente el tema. Veamos:


CLASE NUMERO UNO:

package mis_clases.clases_publicas.clases_1;
public clases Clases_1




CLASE NUMERO DOS:

packages mis_clases.clases_ 2;
class Clases_2



CLASE NUMERO TRES:

packages mis_clases.
class Clase_3




CLASE NUMERO  CUATRO:

clases Clases_4


En la imagen de abajo se puede apreciar la estructura final obtenida tras la declaración de los paquetes de cada una de las cuatro clases de Java. Veamos con detalle esto para quedar claros.



QUE ES SERVLET


Los Servlets son las respuesta de la tecnología Java a la programación CGI. Son programas que se ejecutan en un servidor Web y construyen páginas Web. Construir páginas Web al vuelo es útil (y comúnmente usado) por un número de razones:
  • La página Web está basada en datos enviados por el usuario. Por ejemplo, las páginas de resultados de los motores de búsqueda se generan de esta forma, y los programas que procesan pedidos desde sites de comercio electrónico también.
  • Los datos cambian frecuentemente. Por ejemplo, un informe sobre el tiempo o páginas de cabeceras de noticias podrían construir la página dinámicamente, quizás devolviendo una página previamente construida y luego actualizándola.
  • Las páginas Web que usan información desde bases de datos corporativas u otras fuentes. Por ejemplo, usaríamos esto para hacer una página Web en una tienda on-line que liste los precios actuales y el número de artículos en stock.

Cuáles son las Ventajas de los Servlets sobre el CGI "Tradicional"?

Los Servlets Java son más eficientes, fáciles de usar, más poderosos, más portables, y más baratos que el CGI tradicional y otras muchas tecnologías del tipo CGI. (y lo que es más importante, los desarrolladores de servlets cobran más que los programadores de Perl :-).
  • Eficiencia. Con CGI tradicional, se arranca un nuevo proceso para cada solicitud HTTP. Si el programa CGI hace una operación relativamente rápida, la sobrecarga del proceso de arrancada puede dominar el tiempo de ejecución. Con los Servlets, la máquina Virtual Java permanece arrancada, y cada petición es manejada por un thread Java de peso ligero, no un pesado proceso del sistema operativo. De forma similar, en CGI tradicional, si hay N peticiones simultáneas para el mismo programa CGI, el código de este problema se cargará N veces en memoria. Sin embargo, con los Servlets, hay N threads pero sólo una copia de la clase Servlet. Los Servelt también tienen más alternativas que los programas normales CGI para optimizaciones como los caches de cálculos prévios, mantener abiertas las conexiones de bases de datos, etc.

  • Conveniencia. Hey, tu ya sabes Java. ¿Por qué aprender Perl? Junto con la conveniencia de poder utilizar un lenguaje familiar, los Servlets tienen una gran infraestructura para análisis automático y de codificación de datos de formularios HTML, leer y seleccionar cabeceras HTTP, manejar cookies, seguimiento de sesiones, y muchas otras utilidades.
  • Potencia. Los Servlets Java nos permiten fácilmente hacer muchas cosas que son difíciles o imposibles con CGI normal. Por algo, los servlets pueden hablar directamente con el servidor Web. Esto simplifica las operaciones que se necesitan para buscar imágenes y otros datos almacenados en situaciones estándards. Los Servlets también pueden compartir los datos entre ellos, haciendo las cosas útiles como almacenes de conexiones a bases de datos fáciles de implementar. También pueden mantener información de solicitud en solicitud, simplicando cosas como seguimiento de sesión y el caché de cálculos anteriores.
  • Portable. Los Servlets están escritos en Java y siguen un API bien estandarizado. Consecuentemente, los servlets escritos, digamos en el servidor I-Planet Enterprise, se pueden ejecutar sin modificarse en Apache, Microsoft IIS, o WebStar. Los Servlets están soportados directamente o mediante plug-in en la mayoría de los servidores Web.
  • Barato. Hay un número de servidores Web gratuitos o muy baratos que son buenos para el uso "personal" o el uso en sites Web de bajo nivel. Sin embargo, con la excepción de Apache, que es gratuito, la mayoría de los servidores Web comerciales son relativamente caros. Una vez que tengamos un servidor Web, no importa el coste del servidor, añadirle soporte para Servlets (si no viene preconfigurado para soportarlos) es gratuito o muy barato.


QUE ES JSP
Java Server Pages (JSP) es una tecnología que nos permite mezclar HTML estático con HTML generado dinámica mente. Muchas páginas Web que están construidas con programas CGI son casi estáticas, con la parte dinámica limitada a muy pocas localizaciones. Pero muchas variaciones CGI, incluyendo los servlets, hacen que generemos la página completa mediante nuestro programa, incluso aunque la mayoría de ella sea siempre lo mismo. JSP nos permite crear dos partes de forma separada. Aquí tenemos un ejemplo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>Hola Mundo</TITLE>
</HEAD>
<BODY>
<H1>Hola Mundo</H1>
<!-- User name is "New User" for first-time visitors --> 
<% out.println(Utils.getUserNameFromCookie(request)); %>
To access your account settings, click
<A HREF="Account-Settings.html">here.</A></SMALL>
<P>
Regular HTML for all the rest of the on-line store's Web page.
</BODY>
</HTML>

Cuáles son las Ventajas de JSP

  • Contra Active Server Pages (ASP). ASP es una tecnología similar de Microsoft. Las ventajas de JSP están duplicadas. Primero, la parte dinámica está escrita en Java, no en Visual Basic, otro lenguaje específico de MS, por eso es mucho más poderosa y fácil de usar. Segundo, es portable a otros sistemas operativos y servidores Web.
  • Contra los Servlets. JSP no nos da nada que no pudiéramos en principio hacer con un servlet. Pero es mucho más conveniente escribir (y modificar!) HTML normal que tener que hacer un billón de sentencias println que generen HTML. Además, separando el formato del contenido podemos poner diferentes personas en diferentes tareas: nuestros expertos en diseño de páginas Web pueden construir el HTML, dejando espacio para que nuestros programadores de servlets inserten el contenido dinámico.
  • Contra Server-Side Includes (SSI). SSI es una tecnología ámpliamente soportada que incluye piezas definidas externamente dentro de una página Web estática. JSP es mejor porque nos permite usar servlets en vez de un programa separado para generar las partes dinámicas. Además, SSI, realmente está diseñado para inclusiones sencillas, no para programas "reales" que usen formularios de datos, hagan conexiones a bases de datos.

  • Contra JavaScript. JavaScript puede general HTML dinámicamente en el cliente. Este una capacidad útil, pero sólo maneja situaciones donde la información dinámica está basada en el entorno del cliente. Con la excepción de las cookies, el HTTP y el envió de formularios no están disponibles con JavaScript. Y, como se ejecuta en el cliente, JavaScript no puede acceder a los recursos en el lado del servidor, como bases de datos, catálogos, información de precios.

ENCAPSULAMIENTO

Resultado de imagen para ENCAPSULAMIENTO

https://www.google.com.co/search?q=ENCAPSULAMIENTO&source=lnms&tbm=isch&sa=X&ved=0ahUKEwifs6mUoMrTAhXETSYKHYuGAvsQ_AUICCgB&biw=1920&bih=974#imgrc=xCWiKX9WOrAi6M:

En programación Modular, y más específicamente en programación orientada a objetos, se denomina Encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto
·         público: funciones de toda clase pueden acceder a los datos o métodos de una clase que se define con el nivel de acceso público. Este es el nivel de protección de datos más bajo
·         protegido: el acceso a los datos está restringido a las funciones de clases heredadas, es decir, las funciones miembro de esa clase y todas las subclases
·         privado: el acceso a los datos está restringido a los métodos de esa clase en particular. Este es nivel más alto de protección de datos (10)


VENTAJAS 

  • Todo el código se encuentra en un solo lugar
  • Los objetos pueden tener varios atributos por ejemplo, que lea un sensor y a la vez encienda.
  • Son mas fáciles de entender los códigos.
  • Le ejecución del programa es rápida y sencilla, todo se encuentra en una sola ventana.

DESVENTAJAS

  • Los programas no pueden ser moldeados enteramente por la programación orientada a objetos.
  • Para leer, modificar, o hacerles algo simplemente; en algunos programas debes realizar un paso extra para realizar estas acciones.
  • Si se fuerza el lenguaje puede perder algunos objetos y características.
  • Los objetos requieren una extensa documentación.
  • Los objetos al ser abstracto pueden no coincidir la visión de un programador a otro.


CARACTERÍSTICAS 


  • Abstracción: Cada objeto sirve como modelo abstracto que puede realizar trabajos. informar, cambiar su estado y  comunicarse con otros objetos en el sistema sin revelar como se implementan estas características
  • Encapsulación: También llamado ocultación de información asegura que no se pueda cambiar el estado de otros objetos, cada objeto tiene una interfaz diferente de los otros.
  • Polimorfismo: Pueden tener objetos de diferente tipos y la invocación  de un comportamiento correcto para el tipo real de referente esto ocurre durante  el tiempo de ejecución.
  • Herencia: Organiza y facilita el polimorfismo y el encapsulamiento permitiendo que los objetos sean definidos y creados especialmente.  


Algunos ejemplo de lenguajes orientada a objetos son:


  • PHP
  • PYTHON
  • JAVA
  • C
  • C++



HERENCIA

Resultado de imagen para herencia java

https://www.google.com.co/search?biw=1920&bih=974&tbm=isch&sa=1&q=herencia+java&oq=herencia+java&gs_l=img.3...27703.28997.0.29901.0.0.0.0.0.0.0.0..0.0....0...1c.1.64.img..0.0.0.UqlP-Tch1Ak#imgrc=Ewk4uaQVJGCqxM:

Muchas veces distintos objetos comparten campos y métodos que hacen aproximadamente lo mismo (por ejemplo almacenar y devolver un nombre del ámbito humano con el que se designa al objeto, como el título de un álbum de música, el título de un libro, el título de una película, etc.).

Por ejemplo en un proyecto que utilice objetos Taxi y objetos Autobus podríamos encontrarnos algo así:
herencia, java


Para una aplicación de gestión de una empresa de transporte que tenga entre sus vehículos taxis y autobuses podríamos tener otra clase denominada FlotaCirculante donde tendríamos posibilidad de almacenar ambos tipos de objeto (por ejemplo taxis en un ArrayList y autobuses en otro ArrayList) como reflejo de los vehículos que se encuentran en circulación en una fecha dada. Esas listas conllevarían una gestión para añadir o eliminar vehículos de la flota circulante, modificar datos, etc. resultando que cada una de las listas necesitaría un tratamiento o mantenimiento.
Si nos fijamos en el planteamiento del problema, encontramos lo siguiente:
a) La definición de clases nos permite identificar campos y métodos que son comunes a Taxis y Autobuses. Si implementamos ambas clases tal y como lo venimos haciendo, incurriremos en duplicidad de código. Por ejemplo si el campo matricula es en ambas clases un tipo String, el código para gestionar este campo será idéntico en ambas clases.
b) La definición de clases nos permite identificar campos y métodos que difieren entre una clase y otra. Por ejemplo en la clase Taxi se gestiona información sobre un campo denominado numeroDeLicencia que no existe en la clase Autobus.
c)  Conceptualmente podemos imaginar una abstracción que engloba a Taxis y Autobuses: ambos podríamos englobarlos bajo la denominación de “Vehículos”. Un Taxi sería un tipo de Vehiculo y un Autobus otro tipo de Vehiculo.
d) Si la empresa añade otros vehículos como minibuses, tranvías, etc. manteniendo la definición de clases tal y como la veníamos viendo, seguiríamos engrosando la duplicidad de código. Por ejemplo, un minibús también tendría matrícula, potencia… y los métodos asociados.

La duplicidad de código nos implicará problemas de mantenimiento. Por ejemplo inicialmente tenemos una potencia en caballos y posteriormente queremos definirla en kilowatios. O tenemos simplemente que modificar el código de un método que aparece en distintas clases. El tener el código duplicado nos obliga a tener que hacer dos o más modificaciones en sitios distintos. Pueden ser dos modificaciones, tres, cuatro o n modificaciones dependiendo del número de clases que se vieran afectadas, y esto a la larga genera errores al no ser el mantenimiento razonable.
En la clase FlotaCirculante también tendremos seguramente duplicidades: por un lado un ArrayList de taxis y por otro un ArrayList de autobuses, por un lado una operación de adición de taxis y otra operación de adición de autobuses, por un lado una operación para mostrar los elementos de la lista de taxis y otra para los elementos de la lista de autobuses…
¿No sería más razonable, si una propiedad o método va a ser siempre común para varios tipos de objetos, que estuviera localizada en un sitio único del que ambos tipos de objeto “bebieran”? En los lenguajes con orientación a objetos la solución a esta problemática se llama herencia. La herencia es precisamente uno de los puntos clave de este tipo de lenguajes. 
herencia nos permite definir una clase como extensión de otra: de esta manera decimos “la clase 1.1 tiene todas las características de la clase 1 y además sus características particulares”. Todo lo que es común a ambas clases queda comprendido en la clase “superior”, mientras lo que es específico, queda restringido a las clases “inferiores”. En nuestro ejemplo definiríamos una clase denominada Vehiculo, de forma que la clase Taxi tuviera todas las propiedades de la clase Vehiculo, más algunas propiedades y métodos específicos. Lo mismo ocurriría con la clase Autobus y otras que pudieran “heredar” de Vehiculo. Podríamos seguir creando clases con herencia en un número indefinido: tantas como queramos. Si piensas en el API de Java, hay cientos de clases que heredan de clases jerárquicamente superiores como la clase Object. En un proyecto propio, podremos tener varias clases que hereden de una clase común.
herencia, java

                      Esquema básico de herencia



POLIMORFISMO
Resultado de imagen para POLIMORFISMO java
https://www.google.com.co/search?biw=1920&bih=974&tbm=isch&sa=1&q=POLIMORFISMO+java&oq=POLIMORFISMO+java&gs_l=img.3...34305.37535.0.38198.0.0.0.0.0.0.0.0..0.0....0...1c.1.64.img..0.0.0.dW-1SaNFIU4#imgrc=qg2V4oYENiCOyM:


El Polimorfismo es uno de los 4 pilares de la programación orientada a objetos (POO) junto con la AbstracciónEncapsulación y Herencia. Para entender que es el polimorfismo es muy importante que tengáis bastante claro el concepto de la Herencia, por tanto recomendamos que veáis la entrada en la que hablamos de la Herencia: Herencia en Java, con ejemplos.
Para empezar con esta entrada, se ha de decir que el término "Polimorfismo" es una palabra de origen griego que significa "muchas formas". Este termino se utiliza en la  POO para "referirse a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos". Como esta definición quizás sea algo difícil de entender, vamos a explicarla con el ejemplo que pusimos en la entrada de la herencia en la que queríamos simular el comportamiento que tendrían los diferentes integrantes de la selección española de fútbol; tanto los Futbolistas como el cuerpo técnico (Entrenadores, Masajistas, etc…). Para este ejemplo nos vamos a basar en el siguiente diagrama de clases:
PolimorfismoFutbol-diag
en este diagrama y en adelante no vamos a poner los constructores y métodos getter y setter con el fin de que el diagrama nos quede grande e “intendible” aunque en un buen diagrama de clases deberían aparecer para respetar el principio de encapsulación de la PO
En este ejemplo vamos a tener una clase padre (SelecciónFutbol) en la que tendremos los atributos y métodos comunes a todos los integrantes que forman la selección española de fútbol (Futbolistas, Entrenadores, Masajistas, etc.) y en ella se van a implementar los métodos del comportamiento "genérico" que deben de tener todos los integrantes de la selección. Como ya dijimos en la entrada de la herencia, la herencia no es más que sacar "factor común" del código que escribimos, así que los atributos y métodos de la clase SeleccionFutbol los tendrán también los objetos de las clases Futbolista, Entrenador y Masajista. Antes de seguir vamos a mostrar el código de la clase "SeleccionFutbol" para ver algunas peculiaridades
public abstract class SeleccionFutbol {
protected int id;
protected String nombre;
protected String apellidos;
protected int edad;
// constructores, getter y setter
public void viajar() 
 System.out.println("Viajar (Clase Padre)");
}
public void concentrarse() {
System.out.println("Concentrarse (Clase Padre)");
}
// IMPORTANTE -> METODO ABSTRACTO => no se implementa en la clase abstracta pero si en la clases hijas
public abstract void entrenamiento();
public void partidoFutbol() {
 System.out.println("Asiste al Partido de Fútbol (Clase Padre)");
}
}
Lo primero que nos debe de llamar la atención al ver este código es que utilizamos dos veces la palabra reservada "abstract". Esta palabra nos indica que la clase "SeleccionFutbol" es una clase abstracta y las clases abstractas no se pueden instanciar, por tanto nunca podremos hacer un "new SeleccionFutbol()". Otra cosa que vemos es que también utilizamos la palabra reservada abstract en un método (en el método entrenamiento). Esto quiere decir que todas las clases hijas de la clase "SeleccionFubol" tienen que tener implementado ese método obligatoriamente. Por tanto con esto que se acaba de contar y diciendo que la palabra "Polimorfismo" significa "muchas formas", podéis deducir que la clase "SeleccionFutbol" es una clase que puede adoptar diferentes formas y en este ejemplo puede adoptar las formas de "Futbolista", "Entrenador" y "Masajista".
Ejm_polimorfismo_jarroba

Como vemos un "Entrenador", un "Futbolista" y un "Masajista" pertenecen a la misma clase padre y por eso se instancian diciendo que es una SeleccionFutbol y son nuevos objetos de las clases hijas. Por otro lado vemos que no se pueden crear objetos de una clase abstracta, por tanto el crearnos el objeto "casillas" nos da un error.



ABSTRACCIÓN

Resultado de imagen para abstraccion java
https://www.google.com.co/search?q=abstraccion+java&source=lnms&tbm=isch&sa=X&ved=0ahUKEwif8v2Co8rTAhVIOyYKHSfIChkQ_AUICCgB&biw=1920&bih=974#imgrc=GJa9cb1VBgsfuM:



La abstracción es como se pueden representar los objetos en modo de código.

Es un método por el cual abstraemos, vale la redundancia, una determinada entidad de la realidad;  sus características y funciones que desempeñan. Estos son representados en clases por medio de atributos y métodos de dicha clase.

EJEMPLO

Un ejemplo sencillo para comprender este concepto seria la abstracción de un Automóvil.


Acá vamos a sacar de esta entidad sus características por ejemplo: 
color, año de fabricación, modelo, etc. 
Y ahora sacamos sus métodos o funciones típicas de esta entidad como por ejemplo: frenar, encender, etc. 
A esto se le llama abstracción.

Para mostrar una aplicación funcional haremos un visor de resulsets para el servidor de bases de datos MySQL y trataremos de que esté orientado a objetos. Visualmente, no es difícil ver que se necesitarán al menos dos ventanas: aquélla para la autenticación del usuario y la que sirve para escribir las consultas y mostrar sus resultados. Desde esta perspectiva, podemos establecer cuatro ámbitos:
  • Conexión a datos
  • Autenticación de usuario
  • Consultas SQL
  • Vista de resultados
Con esto hemos encapsulado lo que podríamos llamar los meta-objetos de nuestra aplicación. Esto significa que cada uno de los ítems anteriores se debe estructurar con al menos una clase, o con algunas en colaboración. Entonces, atenderemos cada una de ellos por separado.





1 comentario:

LEVANTAMIENTO DE INFORMACION

QUE ES SISTEMA: la composición de un sistema  es el común de sus partes, un sistema tiene una estructura interna o mas conocidas como ...