No es arriesgado afirmar que Java supone un importante avance en el mundo de los ámbitos software, y esto viene avalado por tres fundamentos claves que diferencian a este lenguaje desde un punto de vista tecnológico: Es un lenguaje de programación que proporciona la potencia del diseño orientado a objetos con una sintaxis fácilmente accesible y un ámbito robusto y agradable. Ofrece un conjunto de clases potente y flexible. Pone al alcance de cualquiera la utilización de aplicaciones que se pueden incluir directamente en páginas Web (aplicaciones denominadas applets). Java aporta a la Web una interactividad que se había buscado mientras mucho tiempo entre usuario y aplicación. A lo largo de este artículo se estudian en detalle las principales características de Java. Potente a.) Orientación a objetos En este apariencia Java fuese diseñado partiendo de cero, no siendo derivado de otro lenguaje previo y no tiene compatibilidad con ninguno de ellos. En Java el concepto de objeto resulta sencillo y sencillo de ampliar. Además se conservan fundamentos ?no objetos?, como números, caracteres y otros tipos de datos simples. b.) Riqueza semántica Pese a su simpleza se ha conseguido un considerable potencial, y aunque cada tarea se puede hacer de un número reducido de formas, se ha conseguido un mayor potencial de expresión e innovación desde el punto de vista del programador. c.) Robusto Java verifica su código al mismo tiempo que lo escribe, y una vez más antes de ejecutarse, de forma que se alcanza un alto borde de codificación sin yerros. Se realiza un descubrimiento de la gran fracción de los yerros mientras el tiempo de compilación, ya que Java es estricto en cuanto a tipos y declaraciones, y así lo que es rigidez y falta de flexibilidad se convierte en eficacia. Respecto a la gestión de memoria, Java libera al programador del compromiso de tener que controlar especialmente la asignación que de ésta hace a sus necesidades específicas. Este lenguaje posee una gestión avanzada de memoria llamada gestión de basura, y un empleo de excepciones orientado a objetos integrados. Estos fundamentos realizarán muchas tareas antes tediosas a la vez que obligadas para el programador. d.) Modelo de objeto rico Existen algúnas clases que contienen las abstracciones escenciales para facilitar a los proyectos una mayor capacidad de representación. Para ello se contará con un conjunto de clases comunes que pueden aumentar para admitir todas las necesidades del programador. Además la biblioteca de clases de Java ofrece un conjunto único de protocolos de Internet. El conjunto de clases más complicado de Java son sus paquetes gráficos AWT (Abstract Window Toolkit) y Swing. Estos paquetes implementan componentes de una interfaz de usuario gráfica escencial general a todos los ordenadores personales modernos. Simple a.) Fácil aprendizaje El único requerimiento para aprender Java es tener una comprensión de los conceptos básicos de la programación enfocada a objetos. Así se ha creado un lenguaje simple (aunque eficaz y expresivo) pudiendo mostrarse cualquier planteamiento por fracción del programador sin que las interioridades del sistema subyacente sean desveladas. Java es más complejo que un lenguaje simple, pero más fácil que cualquier otro ámbito de programación. El único impedimento que se puede mostrar es obtener entender la programación enfocada a objetos, apariencia que, al ser independiente del lenguaje, se muestra como insalvable. b.) Completado con utilidades El paquete de utilidades de Java viene con un conjunto completo de estructuras de datos complejas y sus métodos asociados, que serán de inestimable ayuda para implementar applets y otras aplicaciones más complejas. Se dispone también de estructuras de datos habituales, como pilas y tablas hash, como clases ya implementadas. Existirá una interfaz Observer/Observable que permitirá la implementación simple de objetos dinámicos cuyo estado se visualiza en pantalla. El JDK (Java Development Kit) suministrado por Sun Microsystems incluye un compilador, un intérprete de aplicaciones, un depurador en línea de comandos, y un visualizador de applets entre otros elementos. Interactivo y orientado a red a.) Interactivo y animado Uno de los requisitos de Java desde sus origenes fuese la probabilidad de crear proyectos en red interactivos, por lo que es capaz de realizar algúnas cosas a la vez sin perder rastro de lo que debería suceder y cuándo. Para se da soporte a la utilización de múltiples hilos de programación (multithread). Las aplicaciones de Java facultan situar figuras animadas en las páginas Web, y éstas pueden concebirse con logotipos animados o con texto que se desplace por la pantalla. También pueden tratarse gráficos generados por determinado proceso. Estas animaciones pueden ser interactivas, permitiendo al usuario un control sobre su apariencia. b.) Arquitectura neutral Java está diseñado para que un proyecto escrito en este lenguaje sea ejecutado correctamente independientemente de la plataforma en la que se esté actuando (Macintosh, PC, UNIX?). Para obtener esto emplea una compilación en una representación intermedia que recibe el nombre de códigos de byte, que pueden interpretarse en cualquier sistema operativo con un intérprete de Java. La desventaja de un sistema de este tipo es el rendimiento; sin embargo, el hecho de que Java fue diseñado para funcionar razonablemente bien en microprocesadores de limitada potencia, unido a la fácilidad de traducción a código máquina hacen que Java supere esa desventaja sin problemas. c.) Esfuerzo en red Java anima las páginas Web y hace probable la inclusión de aplicaciones interactivas y especializadas. Aporta la probabilidad de distribuir contenidos ejecutables, de forma que los suministradores de información de la Web pueden crear una página de hipertexto (página Web) con una interacción continuada y compleja en tiempo real; el contenido ejecutable es transferido literalmente al ordenador del usuario. Los protocolos básicos para laborar en Internet están encapsulados en unas cuantas clases simples. Se incluyen implementaciones ampliables de los protocolos FTP, HTTP, NNTP y SMTP junto con conectores de red de dedebajo nivel e interfaces de nombrado. Esto le faculta interactuar con esos servicios de red poderosos sin tener que entender realmente los detalles de dedebajo nivel de esos protocolos. Este lenguaje está diseñado para cumplir los requisitos de entrega de contenidos interactivos mediante el uso de applets insertados en sus páginas HTML. Además, las clases de Java admiten muy bien estos protocolos y formatos. El envío de las clases de Java a través de Internet se realiza con mayor facilidad, ya que tiene lugar una interfaz unificada, resolviendo así los típicos dificultades de diferencia de versiones. Java ofrece un conjunto de clases para tratar con una abstracción de los conectores de red (sockets) originales de la versión UNIX de Berckley, encapsular la noción de una dirección de Internet o conectar sockets con flujos de datos de Entrada/Salida. Con todas estas probabilidades crece el dinamismo y competitividad de la Web, ya que que es capaz de captar el interés del usuario mientras largo tiempo y faculta a los programadores convertir la Web en un sistema de entrega de software. d.) Applets Una applet (miniaplicación) es un chico proyecto en Java transferido dinámicamente a través de Internet. Presentan un comportamiento inteligente, pudiendo reaccionar a la acceso de un usuario y cambiar de manera dinámica. Sin embargo, la verdadera novedad es el mayor potencial que Java ofrece en este aspecto, haciendo probable que los proyectodores ejerzan un control sobre los proyectos ejecutables de Java que no es probable descubrir en otros lenguajes. Y mucho más a.) Seguridad Existe una preocupación lógica en Internet por el asunto de la seguridad: virus, caballos de Troya, y proyectos parecidas navegan de manera normal por la red, constituyendo una amenaza palpable. Java ha sido diseñado poniendo un énfasis especial en el asunto de la seguridad, y se ha conseguido lograr alguna inmunidad en el apariencia de que un proyecto realizado en Java no puede hacer llamadas a funciones generales ni alcanzar a recursos arbitrarios del sisasunto, por lo que el control sobre los proyectos ejecutables no es equiparable a otros lenguajes. Los niveles de seguridad que muestra son: Fuertes restricciones al entrada a memoria, como son la eliminación de punteros aritméticos y de operadores ilegales de transmisión. Rutina de verificación de los códigos de byte que asegura que no se viole ninguna construcción del lenguaje. Verificación del nombre de clase y de restricciones de entrada mientras la carga. Sistema de seguridad de la interfaz que refuerza las medidas de seguridad en muchos niveles. En futuras versiones se prevé contar también con encriptación y técnicas similares. b.) Lenguaje basado en C++ Java fuese extendido basándose en C++, pero eliminando rasgos del mismo escaso empleados, optándose por una codificación comprensible. Básicamente, encontramos las próximos diferencias con C++: Java no soporta los tipos struct, union ni punteros. No soporta typedef ni #define. Se distingue por su manera de manejar ciertos operadores y no faculta una sobrecarga de operadores. No soporta herencia múltiple. Java maneja argumentos en la línea de comandos de manera variada a como lo hacen C o C++. Tiene una clase String que es fracción del paquete java.lang y se diferencia de la matriz de caracteres terminada con un nulo que usan C y C++. Java cuenta con un sistema automático para asignar y liberar memoria, con lo que no es indispensable utilizar las funciones previstas con este fin en C y C++. c.) Gestión de la Entrada/Salida En espacio de utilizar primitivas como las de C para laborar con ficheros, se utlizan primitivas parecidas a las de C++, mucho más elegantes, que facultan tratar los ficheros, sockets, teclado y monitor como flujos de datos. De este modo se pueden utilizar felicidades primitivas para cualquier operación de Entrada/Salida. d.) Distintos tipos de aplicaciones En Java podemos crear los próximos tipos de aplicaciones: Aplicaciones: Se ejecutan sin necesidad de un navegador. Applets: Se pueden descargar de Internet y se observan en un navegador. JavaBeans: Componentes software Java, que se puedan incorporar gráficamente a otros componentes. JavaScript: Conjunto del lenguaje Java que puede codificarse directamente sobre cualquier documento HTML Servlets: Módulos que facultan sustituir o utilizar el lenguaje Java en espacio de proyectos CGI (Common Gateway Interface) a la hora de dotar de interactividad a las páginas Web.