¿Qué es la tecnología Java?

La tecnología Java es un lenguaje de programación y también una plataforma:

  • La plataforma Java es una plataforma sólo de software que ejecuta sobre la base de varias plataformas de hardware. Viene en tres versiones (consulteDiferentes ediciones de la plataforma Javaa continuación). Está compuesto por JVM y la interfaz de programación de aplicaciones (API) Java un amplio conjunto de componentes de software (clases) listos para usar que facilitan el desarrollo y despliegue de applets y aplicaciones. La API Java abarca desde objetos básicos a conexión en red, seguridad, generación de XML y servicios web. Está agrupada en bibliotecas conocidas como paquetes de clases e interfaces relacionadas.

    Además de la API Java, toda implementación completa de la plataforma Java incluye:

También está probado que JVM es una plataforma robusta para ejecutar lenguajes que no sean Java. Por ejemplo: Groovy, Scala e implementaciones especiales de Ruby y Python ofrecen a los desarrolladores la versatilidad de programar para JVM en un lenguaje dinámico o funcional. (Para obtener más informaciones, consulte¿Cuál es la relación entre la tecnología Java, lenguajes dinámicos y programación funcional?a continuación.)

La tecnología Java fue desarrollada por Sun Microsystems. Java Community Process (JCP), una organización abierta de desarrolladores y titulares de licencias de Java en todo el mundo, desarrolla y revisa especificaciones tecnológicas, implementaciones de referencia y kits de compatibilidad tecnológica de la tecnología Java. En 2007, Sun puso a disposición la mayor parte de su tecnología Java central como software con código fuente abierto bajo la licencia general pública GNU versión 2 (GPLv2). (Para obtener más información, consulte¿Cuál es la relación entre la tecnología Java y el desarrollo de software con código fuente abierto? a continuación.)

¿Por qué la tecnología Java es importante?

El principal beneficio del lenguaje Java es la portabilidad de las aplicaciones Java entre plataformas de hardware y sistemas operativos—posible por que la JVM instalada en cada plataforma entiende el mismo bytecode.

La escalabilidad del lenguaje y de la plataforma Java es impresionante. Es fácil escribir aplicaciones (o adaptarlas a partir de aplicaciones Java ya existentes) para dispositivos con recursos limitados. Al escalar, el lenguaje es una estructura ideal para la programación Web en el servidor, ampliando la capacidad computacional de un usuario desde el desktop hasta los recursos de la Web. Ya que fue diseñado para ejecutar con seguridad en redes, el lenguaje permite ese nivel de seguridad al operar en Internet. Los componentes Web son soportados por plataformas de tiempo de ejecución denominadas contenedores Web, cuyos servicios incluyen asignación de solicitudes, seguridad, concurrencia, gestión de ciclo de vida y acceso a APIs como las de nombramiento, transacciones y e-mail. En el extremo superior, los servidores de aplicaciones Java actúan como contenedores Web para componentes Java, XML y servicios web que pueden interactuar con bases de datos y proporcionar contenido Web dinámico; también proporcionan un entorno de despliegue de aplicaciones para aplicaciones empresariales, con posibilidades de gestión de transacciones, seguridad, agrupación en clúster, rendimiento, disponibilidad, conectividad y escalabilidad.

Al soportar estándares abiertos en la empresa, la tecnología Java abre la puerta para el uso de XML y servicios web para ayudar a compartir informaciones y aplicaciones entre líneas de negocios (consulte¿Cuál es la relación entre la tecnología Java y SOA/ servicios web?a continuación). La tecnología Java actúa como la "espina dorsal" de varios productos y servicios de consultoría técnica de IBM (consulte¿Qué herramientas y productos de IBM están disponibles para programadores Java?a continuación) y es crítica para iniciativas clave de IBM:

Diferentes ediciones de la plataforma Java
Las tres ediciones de la plataforma Java facilita el proceso para que desarrolladores de software, prestadores de servicios y fabricantes de dispositivos enfoquen mercados específicos:

¿Cuáles son las tecnologías de componentes Java?

La zona de developerWorks sobre tecnología Java mantiene un glosario completo de lastecnologías estándar de componentes Java. Lo que sigue es una lista parcial de componentes, paquetes opcionales y extensiones para cada edición de la plataforma—las partes complejas que constituyen el todo—completa con una breve descripción y un enlace a un recurso para demostrar su lugar en el mundo del desarrollo Java. Note que muchos de los siguientes recursos están disponibles en las tres ediciones.

Tecnologías en Java SE:

  • Java Foundation Classes (Swing)(JFC) es un conjunto de bibliotecas de clases Java que soportan la creación de GUIs y funcionalidad de gráficos para aplicaciones de cliente basadas en Java. (Consulte el tutorial "Introduction to Swing"; "Dynamic interface design with Swing" y "Enhance the accessibility of your GUIs" también le ayudará en su iniciación a Swing.)
  • JavaHelpes un sistema de ayuda extensible, independiente de plataforma, que habilita a los desarrolladores y autores a incorporar ayuda online en applets, componentes, aplicaciones, sistemas operativos y dispositivos para proporcionar documentación online basada en la Web. (Consulte "Lend a helping hand to your Java applications.")
  • Java Platform Debugger Architecture(JPDA) es la infraestructura de soporte de depuración para Java SE. (Consulte "The future of software development.")
  • Java 2D APIes un conjunto de clases para imágenes y gráficos 2D avanzados que proporciona un amplio soporte a la composición de imágenes e imágenes de canal alfa, un conjunto de clases para proporcionar una definición exacta del espacio de colores y conversión y un conjunto de operadores de imagen orientados a la pantalla. (Consulte el tutorial "Introduction to Java 2D.")
  • Java Web Startayuda a simplificar el despliegue de aplicaciones Java al permitir que los usuarios descarguen y lancen aplicaciones con funcionalidad completa (como hojas de cálculo) con un único clic, sin tener que pasar por los procedimientos de instalación. (Consulte "Java Web Start.")
  • Certification Path APIproporciona un conjunto de APIs para crear, construir y verificar vías de certificación (también conocidas como "cadenas de certificado") para establecer con seguridad la correlación entre una clave pública y un asunto. (Consulte "Generate certificate chains for testing Java applications.")
  • Java Database Connectivity(JDBC) es una API que permite acceder a la mayoría de las fuentes de datos tabulares desde dentro del código Java, al proporcionar conectividad cruzada de DBMS a una gama amplia de bases de datos SQL y acceso a otras fuentes de datos tabulares, como hojas de cálculo o archivos planos. (Consulte "What's new in JDBC 3.0" y el tutorial "Understanding JDBC.")
  • Java Authentication and Authorization Service(JAAS) es un paquete que permite que los servicios autentiquen y hagan cumplir controles del acceso de los usuarios al implementar una versión Java de la infraestructura Pluggable Authentication Module (PAM) estándar al soportar la autorización basada en los usuarios. (Consulte "Java security with JAAS and JSSE" y "Java authorization internals"; pruebe el tutorial "Java security, Part 2: Authentication and authorization.")
  • Java Cryptography Extension(JCE) es un conjunto de paquetes que proporciona una infraestructura e implementaciones para algoritmos de cifrado, generación y acuerdo de claves y código de autenticación de mensajes (MAC). Proporciona soporte de cifrado para cifras simétricas, asimétricas, de bloqueo y de secuencia (stream) y soporta secuencias seguras y objetos sellados. (Consulte el tutorial "Java security: Crypto basics.")
  • Java Management Extensions(JMX) proporciona herramientas para crear aplicaciones distribuidas, basadas en la Web, modulares y dinámicas para administrar y supervisar dispositivos, aplicaciones y redes basadas en servicios. (Consulte "Using Java platform management beans.")
  • Java Media Framework(JMF) permite que se agreguen audio, video y otros tipos de multimedia basados en tiempo a aplicaciones y applets Java. (Consulte el tutorial "Java Media Framework basics.")
  • Java Naming and Directory Interface(JNDI) proporciona a las aplicaciones Java una interfaz unificada para varios servicios de nombramiento y directorios en la empresa, lo que permite la conectividad sin problemas a servicios empresariales heterogéneos de nombramiento y directorios. (Consulte "Industrial-strength JNDI optimization" y pruebe también "Navigate the JNDI maze.")
  • Java Secure Socket Extensions(JSSE) es un conjunto de paquetes que permite comunicaciones seguras en Internet, al implementar una versión Java de los protocolos SSL (capa de sockets seguros) y TLS (seguridad de la capa de transporte) e incluir la funcionalidad de cifrado de datos, autenticación de servidores, integridad de mensajes y autenticación opcional de clientes. (Consulte "Java security with JAAS and JSSE" y pruebe también el tutorial "Using JSSE for secure socket communication.")
  • Java Speech API(JSAPI) incluye las especificaciones Grammar Format (JSGF) y Markup Language (JSML) y permite que las aplicaciones Java incorporen tecnología de habla a las interfaces de usuario. JSAPI define una API para varias plataformas para soportar reconocedores de comandos y control, sistemas de dictado y sintetizadores de habla. (Consulte esta sección de "The Java 2 user interface.")
  • Java 3Des una API que los desarrolladores pueden usar para incorporar fácilmente gráficos 3D escalables e independientes de plataforma a aplicaciones Java, al proporcionar un conjunto de interfaces orientadas a objeto que soportan un modelo de programación simple y de alto nivel. (Consulte el tutorial "Java 3D joy ride.")
  • El recurso de metadatospermite marcar clases, interfaces, campos y métodos que tienen determinados atributos para que puedan ser procesados en formas especiales por herramientas de desarrollo y de despliegue o bibliotecas de tiempo de ejecución. (Consulte "Annotations in Tiger, Part 1: Add metadata to Java code.")
  • La API Java Content Repositoryes una API para acceder a repositorios de contenido en Java SE independientemente de la implementación. El repositorio de contenido es un sistema de gestión de informaciones de alto nivel que es un superconjunto de repositorios de datos convencionales. (Consulte "Introducing the Java Content Repository API.")
  • Enumeracionesson un tipo que permite representar datos específicos como constantes, en una forma segura para los tipos. (Consulte "Getting started with enumerated types.")
  • Genéricosle permiten definir clases con parámetros de tipos abstractos que usted especifica en el momento de la instanciación. (Consulte "Introduction to generic types in JDK 5.0" y lea "Spice up collections with generics and concurrency" para ver cómo los genéricos facilitan el trabajo con colecciones en Java SE 6.)
  • Las Utilidades de Concurrenciason un conjunto de utilidades de nivel mediano que proporcionan una funcionalidad que normalmente es necesaria en programas concurrentes. (Consulte el tutorial "Concurrency in JDK 5.0.")
  • Java API for XML Processing(JAXP) permite que las aplicaciones Java analicen y transformen documentos XML independientemente de la implementación específica de procesamiento XML y ofrece la flexibilidad de intercambiar procesadores XML sin cambiar el código de la aplicación.Java API for XML Binding(JAXB) le permite automatizar la correlación entre documentos XML y objetos Java. (Consulte el tutorial en tres partes "XML programming in Java technology"; profundice su conocimiento de JAXP con "All about JAXP, Part 1" y "All about JAXP, Part 2" explore más en la serie de artículosPractical data binding; consulte también la zonade developerWorks sobre XML.)
  • SOAP with Attachments API for Java(SAAJ) permite que los desarrolladores produzcan y consuman mensajes en conformidad con la especificación SOAP 1.1 y la nota SOAP with Attachments. (Lea "Send and receive SOAP messages with SAAJ".)

Tecnologías en J2EE:

  • La tecnología Enterprise JavaBeans(EJB) usa un modelo de componente para simplificar el desarrollo de aplicaciones de middleware con soporte automático de servicios como transacciones, seguridad y conectividad de base de datos. (Consulte el tutorial "Getting started with Enterprise JavaBeans technology," que presenta la tecnología; consulte la serieEJB best practices; vea "Design enterprise applications with the EJB 3.0 Java Persistence API.")
  • Java Message Service(JMS) es una API que permite el desarrollo de aplicaciones portables y basadas en mensajes para la plataforma Java al definir un conjunto común de conceptos de mensajería y estrategias de programación para todos los sistemas de mensajería compatibles con la tecnología JMS. (Consulte el tutorial "Introducing the Java Message Service.")
  • JavaServer Faces(JSF) proporciona un modelo de programación que ayuda a crear aplicaciones Web al ensamblar componentes reutilizables de interfaz de usuario en una página, al conectar esos componentes a una fuente de datos de aplicación y conectar los eventos generados por los clientes a manejadores de eventos en el servidor. (Consulte el tutorial en dos partes "Getting Started with JavaServer Faces" y explore la serie de columnasJSF for nonbelievers.
  • JavaServer Pages(JSP) permite que desarrolladores Web desarrollen rápidamente y mantengan fácilmente páginas Web dinámicas e independientes de plataforma con interfaces de usuario separadas y generación de contenido para que los diseñadores puedan cambiar el diseño de la página sin cambiar el contenido dinámico. La tecnología usa etiquetas semejantes a las de XML que encapsulan la lógica que genera el código para la página. (Consulte el tutorial "Introduction to JavaServer Pages technology" y vea también la serieJSP best practices.)
  • Los Java Servletsamplían y mejoran el alcance de los servidores Web al proporcionar un método basado en componentes e independiente de plataforma para crear aplicaciones basadas en la Web sin las limitaciones de rendimiento de los programas CGI. (El tutorial "Introduction to Java Servlet technology" debe proporcionar una buena iniciación.)
  • J2EE Connector Architecture(JCA) define una arquitectura estándar para conectar plataformas J2EE a sistemas heterogéneos de Sistemas Empresariales de Información (EIS) al definir un conjunto de mecanismos escalables, seguros y transaccionales, que habilitan un proveedor de EIS a proporcionar un adaptador de recursos estándar que se conecta a un servidor de aplicaciones. (Consulte "Understanding JCA transactions"; "Choosing among JCA, JMS, and Web services for EAI"; "Integrate remote enterprise information systems with JCA, JMS, and Web services" y el tutorial "Introduction to the J2EE Connector Architecture.")
  • J2EE Management Specification(JMX) define un modelo de informaciones de gestión para la plataforma J2EE. El modelo de gestión J2EE fue diseñado para ser interoperable con varios protocolos y sistemas de gestión e incluye correlaciones estándar entre el modelo y el Common Information Model (CIM), una base informaciones de gestión (MIB) de SNMP y el modelo de objetos Java a través de un componente EJB residente en el servidor, el J2EE Management EJB Component (MEJB). (Consulte "From black boxes to enterprises: Management, JMX 1.1 style.")
  • La API Java Transaction(JTA) es una API de alto nivel, independiente de implementación y de protocolo que permite que aplicaciones y servidores de aplicaciones accedan a transacciones.Java Transaction Service(JTS) especifica la implementación de un gestor de transacciones que soporta JTA e implementa la correlación entre Java y la especificación OMG Object Transaction Service (OTS) 1.1 en el nivel inferior a la API. JTS propaga las transacciones a través del protocolo de Internet Inter-ORB(IIOP). (Consulte "Understanding JTS—An introduction to transactions.")

Tecnologías en J2ME:

  • Mobile 3D Graphics API for J2ME (M3G)es una API liviana e interactiva de gráficos 3D que funciona junto con J2ME y MIDP como un paquete opcional. (Consulte el artículo en dos partes "3D graphics for Java mobile devices.")

¿Cuál es la relación entre la tecnología Java y el desarrollo de aplicaciones Web?

El lenguaje Java viene siendo desde hace mucho un pilar del desarrollo Web y, en los años recientes, hubo una explosión de infraestructuras y herramientas que optimizan el desarrollo Web en Java y facilita la creación de aplicaciones Web 2.0 ricas e interactivas.

Aprenda más sobre el desarrollo Web en el lenguaje Java:

¿Cuál es la relación entre la tecnología Java y SOA/ servicios web?

Una arquitectura orientada a servicios es un modelo de componente que relaciona las unidades funcionales de una aplicación (conocidas como servicios; por eso,servicios web) a través de interfaces y contratos bien definidos entre los servicios. Se define la interfaz en forma neutra, independientemente del hardware, sistema operativo y lenguaje de programación en el cual se implementa el servicio, lo que permite que servicios construidos en sistemas diferentes interactúen el uno con el otro en una forma uniforme y universal. Las SOAs son un modelo alternativo flojamente acoplado para los modelos más convencionales, que son acoplados fuertemente y orientados a objetos.

Los servicios web resultantes permiten que se definan las normas y los procesos empresariales en XML, para que las aplicaciones de software puedan comunicarse independientemente de la plataforma y del lenguaje. La tecnología XML hace los datos portables y facilita la creación de mensajes, mientras que la tecnología Java hace el código portable. El hecho de que XML y el lenguaje Java funcionan bien en conjunto hace que sean una combinación ideal para crear y desplegar servicios web.

Aprenda más sobre eso:

¿Cuál es la relación entre la tecnología Java, lenguajes dinámicos y programación funcional?

Muchos aspirantes a desarrollador Java tienen mucha experiencia en otros lenguajes. Además, incluso los desarrolladores Java experimentados reconocen que Java no es el lenguaje de programación ideal para todaslas necesidades de desarrollo. Afortunadamente, el soporte de JVM a varios lenguajes permite que la plataforma Java aproveche la agilidad y los dispositivos de los lenguajes de script modernos y de los lenguajes funcionales para crear prototipos o ciertos tipos de aplicaciones.

Aprenda más sobre eso:

  • El lenguaje de script Groovy pone los dispositivos y las bibliotecas con las cuales los desarrolladores Java están más familiarizados en una infraestructura de desarrollo ágil que no requiere compilación, facilita las construcciones sintácticas y permite el uso de los scripts dentro de aplicaciones Java normales. Vea lo que Groovy puede hacer en la serie de columnasPractically Groovy.
  • La API de script Java, nueva en Java SE 6 y compatible con las versiones anteriores hasta Java SE 5, proporciona una forma simple de invocar docenas de lenguajes de script a través de un conjunto pequeño de interfaces y clases concretas. También permite leer e invocar scripts externos en el tiempo de ejecución, lo que permite cambiar el comportamiento de una aplicación en ejecución. Lea más acerca de eso en el artículo con dos partes "Invoke dynamic languages dynamically."
  • ¿Es un aficionado de la programación funcional?La serie de columnas The busy Java developer's guide to Scalapresenta Scala, un lenguaje de programación que combina técnicas funcionales y orientadas a objetos para JVM.
  • JVM cuenta con el soporte de lenguajes alternativos desde hace mucho. Consulte la serie de columnasalt.lang.jrepara aprender más sobre el uso de implementaciones de Rexx, Ruby, JavaScript, Python y otras lenguajes en la plataforma Java.

¿Cuál es la relación entre la tecnología Java y el desarrollo de software con código fuente abierto?

Variosproyectos de código fuente abiertoamplían la tecnología Java con bibliotecas, herramientas, infraestructuras, aplicaciones y servidores de aplicaciones para ayudar a los programadores a aprovechar esa tecnología potente. Varias tecnologías de código fuente abierto fueran incorporadas a la plataforma Java propiamente dicha, y otras son las favoritas de los desarrolladores Java (y, en algunos casos, estándares de facto).

Aprenda acerca de algunas tecnologías importantes de código fuente abierto para programación Java:

¿Cómo puedo mejorar mis habilidades en programación Java?

Puede tomar dos caminos para mejorar sus habilidades: un curso(para certificación o sólo para aprender) o el autoaprendizaje (y, por supuesto, practicar la escrita del código). Además de aprovechar el conocimiento de desarrolladores experimentados, vía de los cursos o de la certificación puede ofrecer una prueba concreta a los posibles empleadores de que usted tiene las habilidades necesarias para construir la tecnología que necesitan. Además, al experimentar por su propia cuenta y usar los recursos disponibles, mejora sus habilidades en la tecnología Java. Los siguientes recursos deben ayudar, no importando la vía que elija:

¿Qué herramientas y productos de IBM están disponibles para programadores Java?

IBM está en la vanguardia como uno de los mayores innovadores en el uso de la tecnología Java. La sección a continuación destaca herramientas y productos que IBM ofrece a los desarrolladores Java.

  • Las herramientas de IBM Rationalse basan en la plataforma Eclipse 3.0 y pueden facilitar el desarrollo, la prueba y el despliegue de aplicaciones de alta calidad. Las herramientas de Rational para desarrolladores Java incluyen:

  • WebSphere Application Serveres un servidor de aplicaciones completo, con certificación Java EE, que proporciona la infraestructura segura, escalable y flexible que las empresas necesitan para tener una arquitectura orientada a servicios. Aprenda más acerca de las herramientas de desarrollo Java para la familia WebSphere:

    • Visite la páginaPrincipiantes en WebSpherey el resto de los recursos técnicos sobre Websphereen developerWorkspara aprender todo sobre esa plataforma clave de integración de software de IBM.
    • WebSphere Enterprise Service Busproporciona conectividad de servicios web, mensajería de JMS e integración orientada a servicios para impulsar su arquitectura SOA.
    • WebSphere Process Server y WebSphere Integration Developerproporcionan una plataforma rica de integración de procesos para servicios empresariales basados en SOA.
    • WebSphere sMashes una plataforma para crear y ejecutar aplicaciones dinámicas basadas en Web 2.0 a través de principios de SOA, basada en el Proyecto Zero.
    • Visite el área deherramientas de desarrollo WebSpherepara obtener las más recientes informaciones técnicas y de "cómo hacer" para usar las herramientas WebSphere para crear, probar y desplegar aplicaciones Java EE en escala empresarial.
    • Rational Application Developer for WebSphere Softwarees una herramienta de desarrollo rápido de aplicaciones para desarrollar, analizar, probar, perfilar y desplegar aplicaciones Web, SOA, Java, J2EE y de portal en la plataforma IBM WebSphere.
    • Lazona de WebSphere Portalproporciona portlets, herramientas, tutoriales y noticias para desarrolladores que usan la tecnología WS Portal.
    • WebSphere MQes un servicio de programación de aplicaciones que permite la comunicación entre programas de aplicaciones.
    • WebSphere MQ Everyplacepermite el acceso a datos empresariales para trabajadores móviles y dispositivos remotos con entrega asegurada de los mensajes.
    • Branch Transformation Toolkit for WebSphere Studioes una infraestructura de aplicaciones y un conjunto de herramientas especializadas basadas en Eclipse que aceleran la fase de compilación para aplicaciones de transacciones de front-office con varias capas.
    • WebSphere Message Brokerproporciona un Bus de Servicios Empresariales (ESB) avanzado que proporciona conectividad y transformación universal de datos para servicios y aplicaciones basados en estándares y sin estándares para impulsar SOAs.
  • Los software deGestión de Informaciones de IBMsoftware son una familia potente de servidores de sistemas de gestión de bases de datos relacionales (RDBMS) junto con softwares para almacenamiento de datos, análisis de datos, minería de datos, gestión de activos de multimedia, gestión de contenido empresarial e integración de informaciones. Los softwares de Gestión de Informaciones de IBMsoportan la programación Java, incluyendo aplicaciones de cliente, posibilidades en el servidor y herramientas para facilitar el desarrollo y el despliegue: