martes, 12 de septiembre de 2017

JAVA

https://es.slideshare.net/secret/uW7urhVLSUdUEC


“AÑO DEL BUEN SERVICIO AL CIUDADANO

TEMA: JAVA.

CURSO: LABORATORIO DE PROGRAMACIÓN II.

ESPECIALIDAD: INGENIERÍA DE SISTEMAS Y 
TELEMATICA.

NOMBRE Y APELLIDO: GILDA  PAMELA SILVA  FLORES

DOCENTE: MARCO AURELIO  PORRO  CHULLI.

CICLO: V – A                                   AULA: 101 


BAGUA GRANDE– PERÚ


2017


I. Tema: Java
1. Contenido
Definición
Java es un lenguaje de programación orientado a objetos que se incorporó al ámbito de la informática en los años noventa. La idea de Java es que pueda realizarse programas con la posibilidad de ejecutarse en cualquier contexto, en cualquier ambiente, siendo así su potabilidad uno de sus principales logros. Fue desarrollado por Sun Microsystems, posteriormente adquirido por Oracle. En la actualidad puede utilizarse de modo gratuito, pudiéndose conseguir sin problemas un paquete para desarrolladores que oriente la actividad de programar en este lenguaje. Puede ser modificado por cualquiera, circunstancia que lo convierte en lo que comúnmente se denomina “código abierto”.
Cuando se programa con un lenguaje, se utiliza un tipo de código que la máquina es incapaz de reconocer. Es por ello que se requiere de un proceso de compilación, esto es, de “traducir” el lenguaje utilizado para que la máquina sea capaz de reconocerlo y procesarlo. Cada vez que un código requiere ser ejecutado en un ambiente distinto, deberá compilarse nuevamente. Con el desarrollo de Java se intentó evitar este tipo de circunstancia, haciendo que el código corriera en cualquier ambiente. El modo en que se logró este objetivo es desarrollando una máquina virtual que ejecutase el código compilado; esto significa que la “traducción” ya no se hace para que sea comprendida por un determinado sistema operativo; se hace para que la interprete la “máquina virtual”, que puede correr en cualquier sistema operativo. De esta manera, solo es necesario realizar una compilación, que podrá ser utilizada en cualquier entorno que tenga instalada la máquina virtual java.

Características
  •     Lenguaje totalmente orientado a Objetos. Todos los conceptos en los que se apoya esta técnica, encarcelación, herencia, polimorfismo, etc., están presentes en Java.
  •     Disponibilidad de un amplio conjunto de bibliotecas. Como ya se mencionó anteriormente, Java es algo más que un lenguaje. La programación de aplicaciones con Java se basa no solo en el empleo del juego de instrucciones que componen el lenguaje, sino, fundamentalmente, en la posibilidad de utilizar el completísimo conjunto de clases que Sun pone a disposición del programador y con las cuales es posible realizar prácticamente cualquier tipo de aplicación.
  •    Lenguaje simple. Java posee una curva de aprendizaje muy rápida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que se han eliminado ciertas características, como los punteros. Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque sea de forma elemental, resulta muy fácil aprender Java. Los programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser productivos en poco tiempo.
  •     Distribuido. Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas.
  •     Interpretado y compilado a la vez. Java es compilado, en la medida en que su código fuente se transforma en una especie de código máquina, los bytecodes, semejantes a las instrucciones de ensamblador. Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el sistema de ejecución en tiempo real (run-time).
  •    Robusto. Java fue diseñado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilación y en tiempo de ejecución. Sus características de memoria liberan a los programadores de una familia entera de errores (la aritmética de punteros), ya que se ha prescindido por completo de los punteros, y la recolección de basura elimina la necesidad de liberación explícita de memoria.
  •     Seguro. Dada la naturaleza distribuida de Java, donde las applets se bajan desde cualquier punto de la Red, la seguridad se impuso como una necesidad de vital importancia. A nadie le gustaría ejecutar en su ordenador programas con acceso total a su sistema, procedentes de fuentes desconocidas. Así que se implementaron barreras de seguridad en el lenguaje y en el sistema de ejecución en tiempo real.
  •     Indiferente a la arquitectura. Java está diseñado para soportar aplicaciones que serán ejecutadas en los más variados entornos de red, desde Unix a Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas distintas y con sistemas operativos diversos. Para acomodar requisitos de ejecución tan diversos o variopintos, el compilador de Java genera bytecodes: un formato intermedio indiferente a la arquitectura diseñada para transportar el código eficientemente a múltiples plataformas hardware y software. El resto de problemas los soluciona el intérprete de Java.
  •    Portable. La indiferencia a la arquitectura representa sólo una parte de su portabilidad. Además, Java especifica los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores aritméticos, de manera que los programas son iguales en todas las plataformas. Estas dos últimas características se conocen como la Máquina Virtual Java (JVM).
  •      Alto rendimiento. Java es considerado de alto rendimiento por ser tan  veloz en el momento de correr los programas y por ahorrase muchas líneas de código.
  •     Multihebra. Hoy en día ya se ven como terriblemente limitadas las aplicaciones que sólo pueden ejecutar una acción a la vez. Java soporta sincronización de múltiples hilos de ejecución (multithreading) a nivel de lenguaje, especialmente útiles en la creación de aplicaciones de red distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede interactuar con el usuario mientras otro presenta una animación en pantalla y otro realiza cálculos.
  •    Dinámico. El lenguaje Java y su sistema de ejecución en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos módulos de código bajo demanda, procedente de fuentes muy variadas, incluso desde la Red.
  •    Produce applets. Java puede ser usado para crear dos tipos de programas: aplicaciones independientes y applets. Las aplicaciones independientes se comportan como cualquier otro programa escrito en cualquier lenguaje, como por ejemplo el navegador de Web HotJava, escrito íntegramente en Java. Por su parte, las applets son pequeños programas que aparecen embebidos en las páginas Web, como aparecen los gráficos o el texto, pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones de red, presentar menús y cuadros de diálogo para luego emprender acciones, etc.

Tipos de Datos 

Los primeros lenguajes de programación no usaban objetos, solo variables. Una variable podríamos decir que es un espacio de la memoria del ordenador a la que asignamos un contenido que puede ser un valor numérico (sólo números, con su valor de cálculo) o de tipo carácter o cadena de caracteres (valor alfanumérico que constará sólo de texto o de texto mezclado con números).
Como ejemplo podemos definir una variable a que contenga 32 y esto lo escribimos como a = 32. Posteriormente podemos cambiar el valor de a y hacer a = 78. O hacer “a” equivalente al valor de otra variable “b” así: a = b.
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 los programas en Java puede ser necesario tanto el uso de datos elementales como de datos complejos. Por eso en Java se usa el término “Tipos de datos” para englobar a cualquier cosa que ocupa un espacio de memoria y que puede ir tomando distintos valores o características durante la ejecución del programa. Es decir, en vez de hablar de tipos de variables o de tipos de objetos, hablaremos simplemente de tipos de datos. Sin embargo, a veces “coloquialmente” no se utiliza la terminología de forma estricta: puedes encontrarte textos o páginas web donde se habla de una variable en alusión a un objeto.
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).
Veamos los tipos de datos en Java sobre un esquema de síntesis:
Esquema de síntesis de tipos de datos en Java
Este esquema no es necesario aprendérselo de memoria en todos sus detalles, aunque sí lo iremos memorizando poco a poco a medida que lo utilicemos, por lo menos hasta tener en nuestra cabeza los nombres de todos los tipos primitivos y envoltorio y sus características (si son objetos o no y su rango aproximado). A continuación mostramos el mismo esquema en formato de tabla:

TIPOS DE DATOS EN JAVA

NOMBRE
TIPO
OCUPA
RANGO APROXIMADO
TIPOS PRIMITIVOS
(sin métodos; no son objetos; no necesitan una invocación para ser creados)
byte
Entero
1 byte
-128 a 127
short
Entero
2 bytes
-32768 a 32767
int
Entero
4 bytes
2*109
long
Entero
8 bytes
Muy grande
float
Decimal simple
4 bytes
Muy grande
double
Decimal doble
8 bytes
Muy grande
char
Carácter simple
2 bytes
---
boolean
Valor true o false
1 byte
---





TIPOS OBJETO
(con métodos, necesitan una invocación para ser creados)
Tipos de la biblioteca estándar de Java
String (cadenas de texto)
Muchos otros (p.ej. Scanner, TreeSet, ArrayList…)
Tipos definidos por el programador / usuario
Cualquiera que se nos ocurra, por ejemplo Taxi, Autobus, Tranvia
arrays
Serie de elementos o formación tipo vector o matriz. Lo consideraremos un objeto especial que carece de métodos.
Tipos envoltorio o wrapper (Equivalentes a los tipos primitivos pero como objetos.)
Byte
Short
Integer
Long
Float
Double
Character
Boolean


Operadores
Los operadores son muy similares a los de C++, ya lo advertimos en su momento. 
Operadores Aritméticos: Los habituales 
·         Suma +.
·         Resta - .
·         Multiplicación *.
·         División /.
·         Resto de la División %.

Operadores de Asignación: El principal es '=' pero hay más operadores de asignación con distintas funciones que explicamos brevemente ahora.
·         '+=' : op1 += op2 à op1 = op1 + op2
·         '-=' : op1 -= op2 à op1 = op1 - op2
·         '*=' : op1 *= op2 à op1 = op1 * op2
·         '/=' : op1 /= op2 à op1 = op1 / op2
·         '%=' : op1 %= op2 à op1 = op1 % op2

Operadores Unarios: El mas (+) y el menos (-). Para cambiar el signo del operando.

Operador Instanceof: Nos permite saber si un objeto pertenece a una clase o no.
·         NombreObjeto instanceof NombreClase

·         Operadores Incrementales: Son los operadores que nos permiten incrementar las variables en una unidad. Se pueden usar delante y detrás de la variable dependiendo de lo que queramos, es decir, si queremos que incremente o viceversa antes de utilizar o lo contrario.
·         '++'
·         '--'

Operadores Relacionales: Permiten comparar variables según relación de igualdad/desigualdad o relación mayor/menor. Devuelven siempre un valor booleano.
·         '>': Mayor que
·         '<': Menor que
·         '==': Iguales
·         '¡=': Distintos
·         '>=': Mayor o igual que
·         '<=': Menor o igual que

Operadores Lógicos: Nos permiten construir expresiones lógicas.
·         '&&' : devuelve true si ambos operando son true.
·         '||' : devuelve true si alguno de los operados son true.
·         '!' : Niega el operando que se le pasa.
·         '&' : devuelve true si ambos operados son true, evaluándolos ambos.
·         '|' : devuelve true uno de los operando es true, evaluándolos ambos.

Operador de concatenación con cadena de caracteres '+':
·         Por Ejemplo: System.out.println("El total es"+ result +"unidades");

Operadores que actúan a nivel de bits: Son mucho menos utilizados por eso los explicamos más por encima.
·         '>>': desplazamiento a la derecha de los bits del operando.
·         '<<': desplazamiento a la izquierda de los bits de operando.
·         '&': operador and a nivel de bit.
·         '|': operador or a nivel de bit.

2. Resumen
Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados.
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. Su sintaxis deriva en gran medida de C y C++, pero tiene menos utilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede ejecutarse en cualquier máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente.
La compañía Sun desarrolló la implementación de referencia original para los compiladores de Java, máquinas virtuales, y libreríasde clases en 1991 y las publicó por primera vez en 1995. A partir de mayo de 2007, en cumplimiento con las especificaciones del Proceso de la Comunidad Java, Sun volvió a licenciar la mayoría de sus tecnologías de Java bajo la Licencia Pública General de GNU. Otros también han desarrollado implementaciones alternas a estas tecnologías de Sun, tales como el Compilador de Java de GNU y el GNU Classpath.

3. Summary

Java is a general-purpose, concurrent, object-oriented programming language that was specifically designed to have as few implementation dependencies as possible. It is intended to allow application developers to write the program once and run it on any device (known as WORA, or "write once, run anywhere"), which means that code that is run on a platform it does not have to be recompiled to run on another. Java is, as of 2012, one of the most popular programming languages ​​in use, particularly for client-server web applications, with about 10 million users reported. The Java programming language was originally developed by James Gosling of Sun Microsystems (which was acquired by the company Oracle) and published in 1995 as a fundamental component of the Java platform of Sun Microsystems. Its syntax derives largely from C and C ++, but has fewer low-level utilities than any of them. Java applications are generally compiled to bytecode (Java class) that can run on any Java virtual machine (JVM) regardless of the architecture of the underlying computer. Sun developed the original reference implementation for Java compilers, virtual machines, and class libraries in 1991 and published them for the first time in 1995. As of May 2007, in compliance with the specifications of the Java Community Process , Sun re-licensed most of its Java technologies under the GNU General Public License. Others have also developed alternate implementations of these Sun technologies, such as the GNU Java Compiler and the GNU Classpath.

4. Recomendaciones
·         No introducir bloques vacios de código o código que no se utiliza.
·         Asegurar que las variables incrementadas dentro de los bucles son las correctas.
·        Hacer uso de los mecanismos de herencia: cuantos más métodos se hereden, menos código se tendrá que escribir.
·         Evitar llamar a Object.notify() o Object.notifyAll() sin que, obviamente, se mantenga un bloqueo en el objeto.
·         Utilizar un máximo de tres niveles de herencia favoreciendo así la compresión del código y evitando excesiva complejidad en el mismo.
·         Evitar codigo cíclico.
·         Evite comparaciones que siempre devuelven el mismo resultado.
·       Evitar método con llamadas Thread.Sleep() con un bloqueo mantenido. Esto puede resultar en un rendimiento muy pobre y escalabilidad, o un estancamiento, ya que otros subprocesos pueden estar esperando para adquirir el bloqueo. Es una idea mucho mejor llamar a wait () en la cerradura, que libera el bloqueo y permite que otros hilos de ejecución.
·         Se recomienda el uso de Map en lugar de utilizar Hashtable.
·         Se recomienda el uso de java.util.Iterator en lugar de utiliar Enumeration.
·       Una operación en un objeto inmutable (String, BigDecimal o BigInteger) no va a cambiar el objeto en sí. El resultado de la operación es un nuevo objeto. Por lo tanto, ignorar el resultado de la operación es un error.
·    Evitar la búsqueda de null ante un instanceof. La palabra clave instanceof devuelve falso cuando se le da un argumento nulo.
·         Controlar la incializacion perezosa de los atributos.
·         Declarar public final serialversionUID para todo lo que pueda ser persistente.
·         Estudie reemplazar los vectores por el uso de ArrayList.
·         Evite crear instancias de un objeto con sólo llamadas al método getClass().
·         No utilizar las palabras "Enum" o "Assert" como identificadores.
·         Nunca realice llamadas a System.runFinalizersOnExit o Runtime.runFinalizersOnExit.

5. Conclusiones
Es un resumen de algunas partes del famoso lenguaje Java, muy utilizado para escribir los programas que trabajan en internet y no sólo para eso; empezando por las bases hasta llegar a las interfaces gráficas y, finalmente, al sonido. Éstos son todos aspectos más avanzados de la programación.
Quiero disculparme con mis lectores menos expertos por si han tenido problemas para entender algunas partes de la guía y, al mismo tiempo, quiero hacerlo con los más expertos si han encontrado algo demasiado aburrido o simple. Los que han asistido a todo el curso tendrían que ser capaces de escribir unos apliques simples y unas aplicaciones por su cuenta. No creo que hayáis conseguido todavía gestionar grandes aplicaciones complejas, aunque, con un poco de práctica y con los simples conceptos del curso, os váis a convertir en excelentes programadores.
Yo estaré siempre disponible a posibles preguntas sobre el curso o a más explicaciones, pero os pido que no me escribáis para los Javascript o para la configuración de los apliques bajados de la red.
Para los que quieran profundizar los temas tratados o ver nuevos, os dejo la bibliografía completa en la que me he basado para preparar este curso.

6. Glosario de Términos

Applet. Un applet es un componente de software (código de programa) que el explorador descarga para proporcionar funciones en una página web. Los applets de Java proporcionan funciones interactivas en un explorador web mediante Java Virtual Machine (JVM).

Comprobar/Seleccionar. Método por el que los usuarios introducen información en un cuadro de diálogo o página web, ya sea activando una casilla de control con el cursor para crear una marca de verificación o colocando el cursor sobre un botón de radio y haciendo clic para "pulsar" el botón.

Cuadro de diálogo. Ventana especial de una interfaz de usuario gráfica que informa al usuario o le solicita información.

Activar/Desactivar. Configuración del software accesible para el usuario que activa o desactiva ciertas funciones o capacidades. Resulta útil para resolver problemas de la configuración de Java, ya que se le puede solicitar al usuario que utilice un cuadro de diálogo para activar o desactivar una configuración o función específicas.

Firewall. Los firewalls de Internet pueden ser software o hardware que protegen su computadora de ataques externos de Internet que puedan suponer una amenaza para la seguridad de Internet y para los archivos de su computadora. La funcionalidad del firewall permite establecer reglas para permitir o denegar el pasaje del tráfico de Internet.

Archivo Java (JAR). El archivo Java (.jar) es un formato de archivo que se utiliza para agrupar varios archivos dentro de un único archivo de almacenamiento. Normalmente un archivo JAR contiene los archivos de clase y recursos auxiliares asociados a applets y aplicaciones.

Java Plugin. La tecnología Java Plugin forma parte de Java Runtime Environment y establece la conexión entre los exploradores más conocidos y la plataforma Java. Esta conexión permite que los applets de sitios Web se ejecuten en el explorador en el escritorio.

Caché de Java Runtime Environment (JRE). Área de almacenamiento de la consola de Java que, en ocasiones, se debe borrar de forma manual para permitir la carga e instalación de la última versión de Java.


Java Virtual Machine (JVM).  En Java, un conjunto de programas de software que permiten la ejecución de instrucciones y que normalmente están escritos en código byte de Java. Las máquinas virtuales de Java están disponibles para las plataformas de hardware y software de uso más frecuente. 

javaw.exe. El proceso javaw.exe es un programa propiedad de Oracle, Inc., que funciona junto con el explorador Internet Explorer como un plugin de Java. Este programa es similar al programa java.exe. La única diferencia radica en que el proceso javaw.exe no tiene ninguna ventana de consola al ejecutarse. Si no desea ver una ventana de símbolo del sistema, podría utilizar mejor el proceso javaw.exe. El archivo javaw.exe es un programa de ejecución que mostrará un cuadro de diálogo durante los momentos en los que se produzca un fallo al iniciar un programa.

Jucheck.exe. El proceso jucheck.exe forma parte de la instalación de Java en Windows y comprueba si hay nuevas versiones de Java. El proceso no instala Java y le notifica que una versión más reciente esté lista para su descarga. » Más información.
 
7. Bibliografía o Linkografía

  • ·         Documentación oficial de la Sun Microsystems de Java Development Kit Versioni 1.3, 1.3 Relase Candidate 1, 1.3 Relase Candidate 2, 1.3 Relase Candidate 3, 1.3 Beta, 1.2.2 , 1.2.1.
  • ·          Disponible en la red en el sito oficial de Java: http://java.sun.com
  • ·         Java Didáctica y Programación, K.Arnold e J. Gosling, Addison-Wesley Primera edición, (en italiano) Marzo de 1997
  • ·         Manual QUE - Special Edition Using Java, 2nd Edition, versión encontrada en internet (en inglés).
  • ·         Java2 Todo&Más, J. Jaworski, SAMS Publishing - APOGEO (en inglés)
  • ·         Javatm 2D Graphics, J. Knudsen, O'REILLY (en inglés)
  • ·         Ambiente para explorar los micromundos en competición, Pietro Castellucci, Tesina en Informática. (en italiano).
  • ·         duibokarinaup.blogspot.com/2014/10/conclusion.html
  • ·         www.htmlpoint.com/guidajava/java_39.html
  • ·         puntocomnoesunlenguaje.blogspot.com/2012/04/operadores.html








No hay comentarios:

Publicar un comentario