Java Card es una tecnología que permite ejecutar de forma segura pequeñas aplicaciones Java (applets) en tarjetas inteligentes y similares dispositivos empotrados.

Java Card da al usuario la capacidad de programar aplicaciones que se ejecutan en la tarjeta de modo que ésta tenga una funcionalidad práctica en un dominio de aplicación específico (pe. identificación, pago, etc.). Esta tecnología se usa ampliamente en las tarjetas SIM (utilizadas en teléfonos móviles GSM) y en tarjetas monedero electrónico.

La primera tarjeta Java fue presentada en 1997 por varias empresas entre las que estaban Axalto (división de tarjetas de Schlumberger) y Gemplus. Los productos Java Card están basados en la Plataforma Java Card cuyas especificaciones han sido desarrolladas por Sun Microsystems. La última versión de la plataforma JavaCard es la especificación 3.2, liberada por Oracle en el 2023.

Las principales características de esta tecnología son la portabilidad y la seguridad.

Portabilidad

editar

Java Card tiene por objeto la definición de un estándar de tarjeta inteligente que permite a la misma applet funcionar en diferentes tarjetas inteligentes, de forma muy parecida a cómo un applet de Java se ejecuta en diferentes ordenadores. Al igual que en Java, esto se consigue utilizando la combinación de una máquina virtual (la Máquina virtual de Java Card), y unas librerías cuya API está especificada. La portabilidad, en todo caso, sigue siendo obviada en muchos casos por cuestiones de tamaño de la memoria, el rendimiento y tiempo de ejecución (por ejemplo para los protocolos de comunicación o algoritmos criptográficos).

Seguridad

editar

La tecnología Java Card fue desarrollada originalmente con el propósito de asegurar la información sensible almacenada en las tarjetas inteligentes. La seguridad está determinada por diversos aspectos de esta tecnología:

  • Applet. El applet es una máquina de estados que solo procesa los comandos recibidos a través del dispositivo lector enviando y respondiendo con códigos de estado y datos.
  • Separación de applets. Las distintas aplicaciones están, además, separadas unas de otras por un cortafuegos que limita el acceso y control de los elementos de datos de un subprograma a otro.
  • Encapsulación de datos. Los datos se almacenan en la aplicación y las aplicaciones Java Card se ejecutan en un entorno aislado (la tarjeta de Java VM), separada del sistema operativo y del equipo en que se lee la tarjeta.
  • Criptografía. En esta plataforma están implementados los algoritmos criptográficos más comúnmente utilizados como DES, 3DES, AES, RSA (incluyendo el uso de criptografía de curva elíptica). Otros servicios como la firma electrónica o la generación de claves de intercambio también están soportados.

Java Card frente a Java

editar

Lenguaje

editar

A nivel de lenguaje, Java Card es un subconjunto de Java: todas las construcciones del lenguaje Java Card existen en Java y se comportan de la misma manera. Esto va hasta el punto de que, como parte de un ciclo estándar de desarrollo, un applet Java Card se compila en un archivo de clase Java (.class) por un compilador Java normal, sin ningún tipo de opción especial (aunque el fichero compilado será procesado posteriormente por herramientas específicas para la plataforma Java Card).

No obstante, muchas características del lenguaje Java no son compatibles con Java Card (en particular algunos tipos básicos (char, double', float y long); los enums; los arrays de más de una dimensión; los hilos (threads);... y algunas características son opcionales y están ausentes en la mayoría de las tarjetas inteligentes (pe. el tipo int, en particular, que es el valor por defecto de un tipo de expresión de Java, la recolección de basura).

Bytecode

editar

El bytecode de Java Card gestionado por la máquina virtual de Java Card es un subconjunto funcional de Java (Java 2 Standard Edition) aunque utiliza una codificación diferente optimizada para ocupar menos espacio.

Librerías de ejecución fe

editar

Las librerías estándar de Java Card difieren en mucho de las de Java, y el subconjunto común es mínimo. Por ejemplo, la clase del Java Security Manager no es compatible con Java Card, donde las políticas de seguridad son ejecutadas por la máquina virtual de la tarjeta.

Desarrollo

editar

Las técnicas de codificación utilizadas en la programación de Java Cards difieren significativamente de las que se utilizan en un programa Java. Aun así, al utilizar Java Card un subconjunto del lenguaje Java se acelera la curva de aprendizaje, y permite utilizar un entorno Java para desarrollar y depurar un programa Java Card.

Enlaces externos

editar

📚 Artikel Terkait di Wikipedia

Plataforma Java

Java SE Java EE Java ME Java Card Java SE[cita requerida] es la plataforma estándar y objetivo de este tutorial sobre Java en la cual se recogen todas

Java (lenguaje de programación)

de Java se refiere. Es posible encontrar microprocesadores diseñados para ejecutar bytecode Java y software Java para tarjetas inteligentes (JavaCard),

Tarjeta inteligente

MasterCard y Visa entonces desarrollaron por separado sus tecnologías y participan en EMV para intentar forzar la interoperabilidad: la Java Card respaldada

Open Smart Card Development Platform

herramientas de código abierto, incluyendo: Eclipse (IDE) OpenCard Framework Rhino (motor de JavaScript) Biblioteca criptográfica BouncyCastle Portal:Software

Prefuse

Prefuse es un toolkit basado en Java para la creación interactiva de aplicaciones de visualización de la información. Soporta un amplio conjunto de características

Nokia 6670

cámara digital de 1 megapixel, 8 MB de almacenamiento, ranura Multi Media Card, Bluetooth y una pantalla de 176x208 y 65,536 colores. El Software incluye

HyperCard

HyperCard fue una aplicación informática de Apple Computer que se contó entre los primeros sistemas hipermedia con éxito anteriores a la World Wide Web

Intérprete (informática)

guardados en esta representación intermedia (ejemplo: Python, UCSD Pascal y Java). En la actualidad, uno de los entornos más comunes de uso de los intérpretes