# data[].attributes.body
Beatriz Martinez
Informatica
Java
Profesora Guadalupe Espinosa
24 de Junio del 2021

# data[].attributes.body
Java fue creado por Sun MicroSystems en el año 1991 como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project. Su equipo de desarrollo trabajó por más de 18 meses hasta lograr liberar su primera versión estable.

# data[].attributes.body
Las 3 características principales de Java  que son las que han propocionado tanto interés por el lenguaje: la portabilidad, el hecho de que sea de arquitectura neutral y su simplicidad.

Java ofrece toda la funcionalidad de los lenguajes potentes, pero sin las características menos usadas y más confusas de éstos.

Java elimina muchas de las características de otros lenguajes como C++, para mantener reducidas especificaciones del lenguaje y añadir características muy útiles como el recolector de basura. No es necesario preocuparse de liberar memoria, el recolector se encarga de eliminar la memoria asignada. Gracias al recolector, sólo te tienes que preocupar de crear los objetos relevantes de tu sistema ya que él se encarga de destruirlos en caso de no ser reutilizados.

Java reduce en un 50% los errores más comunes de programación con lenguajes como C y C++. Entre las características más "indeseables" de C++ que se han evitado en el diseño de Java destacan: ficheros de cabecera, aritmética de punteros, sobrecarga de operadores, estructuras, uniones, conversión implícita de tipos, clases base virtuales, pre-procesador,

# data[].attributes.headline
Otras características importantes de Java 

# data[].attributes.subject
Otras características importantes de Java 

# data[].attributes.body
Java es interpretado:estrictamente hablando, Java es interpretado, aunque en realidad Java es tanto interpretado como compilado. De hecho, sólo cerca del 20% del código Java es interpretado por la JVM (Java Virtual Machine), pero es un 20% muy importante. Tanto la seguridad de Java como su habilidad para ser ejecutado en múltiples plataformas se deben a que los pasos finales de la compilación se manejan localmente.

La máquina virtual Java.
Para establecer Java como parte integral de la red, el compilador Java compila su código a un fichero objeto de formato independiente de la arquitectura de la máquina en que se ejecutará. Cualquier máquina que tenga el sistema de ejecución (runtime) puede ejecutar ese código objeto, sin importar en modo alguno la máquina en que ha sido generado.

Orientación a objetos.
Java implementa la tecnología básica de C++ con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con interfaces a esos objetos. Soporta las tres características propias del paradigma de la orientación a objetos: encapsulación, enlace dinámico y polimorfismo. Los modelos de objetos son llamados, como en C++, clases y sus copias, instancias. Estas instancias, como en C++, necesitan ser construidas y destruidas en espacios de memoria.

# data[].attributes.body
Ventajas y puntos fuertes de Java

Una vez que ya hemos visto todo lo negativo y todas las desventajas de este interesante lenguaje de programación que resulta tan destacado en el mercado y que ha logrado tanta fama entre los informáticos y los usuarios, toca ver sus puntos fuertes y las ventajas que puede aportarnos. Y la primera de las ventajas que vamos a comentar es la facilidad de uso y aprendizaje que conlleva, ya que, al estar orientada a los objetos, no solo supone una mejora para desarrollo y para la programación, sino que también mejora la forma de pensar de su software y el funcionamiento, aunque, como ya hemos visto, el rendimiento sigue siendo su inconveniente. También es una ventaja el hecho de que Java sea independiente de su multiplataforma y de todo lo que esta engloba, ya que eso le permite emplear el software y ejecutarlo desde cualquier equipo o cualquier dispositivo, sin importar que este sea Mac, Windows o Linux, o incluso en dispositivos móviles más actuales y en tabletas.

Java cuenta con una serie de librerías y opciones que le permiten a los usuarios llegar más lejos y contar con herramientas y utilidades para todo lo que deseen y para todo lo que requieran en cualquier momento. Esta es una de las principales característica de Java que los usuarios adoran y que hacen que destaque en el mercado y en el mundo de los lenguajes de programación y la informática. Su librería se llama Java API e incluye tres bloques básicos para todos los usuarios.

Pero Java cuenta con dos ventajas más que no debemos omitir, y que son, en primer lugar, que existen ciertos editores (IDEs) de gran calidad y excelencia, que les permiten a los programadores y desarrolladores hacer más por sus proyectos, a un ritmo más fluido y con un trabajo más cómodo. La última ventaja es la solución de errores y fallos a través del lenguaje de Java que nos ofrece, permitiéndonos revisar las creaciones y corregirlas. En otros lenguajes como C o C++ no existe ese tipo de herramientas y soluciones, lo que hace que Java cuente con una ventaja competitiva evidente y destacable.

# data[].attributes.body
Desventajas de Java e inconvenientes para la programación

Debemos tener en cuenta que Java es uno de los lenguajes más sencillos de utilizar y que se pueden aprender con mayor facilidad, lo que hace que muchos opten por este lenguaje en lugar de otros más complicados o de otras alternativa que en realidad podrían ser lo que necesitan, más que Java, para las tareas que quieren realizar y para su carrera profesional. La primera desventaja que vamos a comentar es esta, que Java no siempre es recomendable. Por ejemplo, para empezar a programar y para aprender un primer lenguaje de programación y desarrollo, lo más aconsejable es optar por otras opciones que no nos transmitan malos hábitos de desarrollo y que nos aporten una experiencia completa, no solo destinada al desarrollo de objetos, como es Java. No es que sea mala ni poco recomendable, sino que para empezar a desarrollar por primera vez hay otras opciones preferibles, según la experiencia de los mismos profesionales e informáticos.

Como vemos en el Curso de Java, la sintaxis que trae Java resulta algo más engorrosa y complicada que otros lenguajes como puede ser .NET o C, que además cuentan con una evolución favorable y mucho mejor que la de Java. Además, este lenguaje y los programas y proyectos realizados con él no pueden ser ejecutados si no se dispone de la máquina virtual de Java que permite visualizar y disfrutar de toda la experiencia de usuario y todo el contenido sin problema. Esto hace que, en caso de que esté desactivado o inactivo el permiso de Java, no podamos ver ciertos contenidos o se vuelvan incompatibles para nuestro dispositivo y para nuestro equipo.

Como última desventaja y la más importante para el mercado y para las empresas de hardware y software, debemos comentar que es un lenguaje interpretado en el que, por su tipología y sus características, cuenta con un rendimiento menor, que hace que nuestros dispositivos y equipos requieran de una mayor potencia y una mayor autonomía para usos similares a los que tendríamos con programas y con software realizados con otros lenguajes de programación.

# data[].attributes.body
Caracteristicas de Java Netbeans

1.- lenguaje simple:

se lo conoce como lenguaje simpleporque viene de la misma estructura de c y c++; ya que c++ fue un referentepara la creación de java por eso utiliza determinadas características de c++ yse han eliminado otras.

2.- orientado a objeto:

toda la programación en java ensu mayoría está orientada a objeto, ya que al estar agrupados en estructurasenestructuras encapsuladas es más fácil su manipulación.

3.- distribuido:

permite abrir sockets, establecery aceptar conexiones con los servidores o clientes remotos; facilita lacreación de aplicaciones distribuidas ya que proporciona una colección declases para aplicaciones en red.

4.- robusto:

es altamente fiable encomparación con c, se han eliminadomuchas características con la aritmética de punteros, proporciona numerosascomprobaciones en compilación y en tiempo de ejecución.

# data[].attributes.body
En la actualidad la última versión es su versión 11 y cómo es de esperar su evolución no solo ha sido constante sino también, en ocasiones, revolucionaria:

Versión 1.0: la primera versión del lenguaje contiene las clases principales , la máquina virtual y el API gráfico de AWT. Es un lenguaje que acaba de nacer.

Versión 1.1: aparece en 1997 e incorpora al lenguaje varias clases que faltaban como Readers /Writers ,Calendars y Bundles . Pero sin ningún lugar a duda su mayor aportación es la inclusión del estandar de JavaBeans y el API de JDBC para conexión a bases de datos.

Versión 1.2: en 1998 aparece otra evolución importante con la llegada del framework de Collections y el API de Swing que permite desarrollar interfaces de ventanas más complejos.

Versión 1.3: avances pequeños en cuanto a APIs, se añade soporte JNDI. Sin embargo el avance en cuanto a la arquitectura de la máquina virtual es importante ya que aparece la máquina HotSpot con compilación JIT (Just-in Time).

Versión 1.4: se produce un salto importante en cuanto a nuevas APIs. Se incorpora un fuerte soporte de XML, expresiones regulares, criptografía, etc.

Versión 1.5: también denomina Java 5 se producen dos saltos importantes a nivel del core del lenguaje. Por una parte la inclusión de tipos Genéricos que se echaban en falta en el mundo de las colecciones. Por el otro lado la inclusión del concepto de metadatos con el uso de anotaciones. Se amplía el soporte de APIs orientadas a programación concurrente.

Versión 1.6: esta versión contiene la inclusión de un API de compilación “on-the-fly” que permite gestionar servicios web de forma cómoda.

Versión 1.7: se produce una mejora de la máquina virtual incluyendo nuevos recolectores de basura.

Versión 1.8: llega Java 8 y se abren las puerta a la programación funcional con el uso de expresiones Lambda y Streams. Se realiza una revisión de APIS y se actualiza de forma importante la gestión de fechas.

Versión 1.9: la característica más llamativa es la modularización de la plataforma con Java 9 que supone grandes mejoras como una mejor encapsulación de los paquetes, interfaces entre módulos bien definidas y dependencias explícitas.

Java 10: aparece el 20 de marzo de 2018 con la mejora en la inferencia de tipos. Todo ello está haciendo que la plataforma evolucione más rápido y significativamente que lo que hasta hace unos años estábamos acostumbrados.

Java 11: el cambio fundamental en Java 11, es sin duda JavaFX que ha sido eliminado de la implementación estándar de la tecnología, para convertirse a pasar en un módulo independiente. También coincide con un importante cambio de política de uso por parte de Oracle y el comienzo de un soporte extendido a usuarios premium.

# data[].attributes.body
Simple. Una de las ventajas de Java reside en su sencillez con una moderada curva de aprendizaje. Esto hace que sea el lenguaje más usado en escuelas y universidades para mostrar los fundamentos de la programación.

Multihilo. Considerando el entorno multithread , cada thread (hilo, flujo de control del programa) representa un proceso individual ejecutándose en un sistema. Cada hilo controla un único aspecto dentro de un programa, como puede ser supervisar la entrada en un determinado periférico o controlar toda la entrada/salida del disco. Todos los hilos comparten los mismos recursos, al contrario que los procesos, en donde cada uno tiene su propia copia de código y datos .

Seguro. Java es un lenguaje de programación seguro y estable. Pensado para poder operar en multitud de entornos. Desde el sector más lúdico a aplicaciones empresariales.

Multiplataforma. Podemos desarrollar nuestro código una única vez y ejecutarlo en cualquier plataforma. Lo que facilita el poder portar nuestro proyecto a diferentes sistemas operativos.

# data[].attributes.body
Como un lenguaje de programación orientado a objetos el programador puede generar fragmentos de código autónomo, que puedan interactuar con otros objetos para resolver un problema ofreciendo soporte para diferentes tecnologías. De hecho es común referirse también Java como un conjunto de tecnologías en referencia a los diferentes productos y versiones que componen su familia.