Tarjeta Java

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 17 de abril de 2016; las comprobaciones requieren 9 ediciones .

Java Card  es una versión de la plataforma Java para dispositivos con recursos informáticos extremadamente limitados. En comparación con otras versiones de Java , el código de bytes, los requisitos para la plataforma de ejecución y la composición de las bibliotecas estándar han cambiado.

El objetivo principal del producto, como su nombre lo indica, es el uso en tarjetas inteligentes . En este sentido, el énfasis principal se puso en el soporte de algoritmos criptográficos estándar.

La tarjeta Java le permite instalar y ejecutar de forma segura pequeñas aplicaciones Java ( applets ) en tarjetas inteligentes y otros dispositivos con una cantidad de memoria muy limitada . Esta plataforma permite al proveedor programar dispositivos y personalizarlos para una aplicación específica. Java Card es ampliamente utilizado en tarjetas SIM y cajeros automáticos . Desarrollado por Schlumberger [1] , lanzado al público el 29 de octubre de 1996 [2] por varias empresas, incluida la entonces división de tarjetas inteligentes de Schlumberger (ahora Gemalto ). La plataforma de software Java Card se describe mediante especificaciones desarrolladas por Sun Microsystems [3] . Además, GlobalPlatform (una organización de estándares) desarrolla estándares para instalar applets de Java Card en dispositivos de forma segura.

Portabilidad

Java Card describe un entorno de tiempo de ejecución estándar en tarjetas inteligentes para permitir que la misma aplicación se ejecute en diferentes dispositivos, al igual que los subprogramas Java SE / Java EE se ejecutan en diferentes computadoras de hardware y software, y los MIDlet Java ME se ejecutan  en diferentes dispositivos y teléfonos. Al igual que con las plataformas Java más sofisticadas, esto se logra mediante una combinación de una máquina virtual (Java Card Virtual Machine, JCVM ) y una biblioteca de clases estandarizada, que permite que el applet se abstraiga significativamente de modelos específicos de tarjetas inteligentes . Sin embargo, esto todavía no garantiza completamente la portabilidad de la aplicación a cualquier tarjeta inteligente, ya que existen factores como el tamaño de la memoria, el rendimiento o la disponibilidad de interfaces especiales (por ejemplo, protocolos de comunicación o algoritmos criptográficos).

Java Card OpenPlatform ( JCOP )

JCOP es un conjunto de medidas para desarrollar un estándar de sistema operativo único con una máquina virtual Java Card para sistemas de identidad y sistemas de pago sólidos. Desarrollado por IBM con amplia integración con GlobalPlatform , organizaciones de la OACI . Hoy es prácticamente sinónimo de JCVM .

Seguridad

La seguridad de los datos en las tarjetas inteligentes fue una de las principales prioridades en el desarrollo de la tarjeta Java . Lo proporcionan varias propiedades de la plataforma:

Diferencias entre Java Card y Java

Idioma

A nivel de lenguaje, Java Card  es un subconjunto de las plataformas Java más completas : todas las construcciones del lenguaje Java Card están presentes en Java y se comportan exactamente de la misma manera. Además, la secuencia de compilación estándar usa el compilador Java normal (javac) sin ninguna opción especial, y solo entonces el resultado es procesado por un programa específico de Java Card para obtener un archivo que se puede instalar en una tarjeta inteligente. Sin embargo, muchas funciones del lenguaje Java no son compatibles con Java Card, como los tipos char , double , float y long , la palabra clave transitoria , los tipos enumerados ( enum ), las matrices multidimensionales, los finalizadores , la clonación de objetos y los flujos .

Código de bytes

El código de bytes ejecutado por la máquina virtual Java Card es funcionalmente un subconjunto del código de bytes de Java , sin embargo, se codifica de manera diferente para minimizar el tamaño de la aplicación. Por lo tanto, un subprograma Java Card normalmente ocupa menos espacio que un hipotético subprograma Java SE obtenido al compilar el mismo código fuente. Este ahorro de memoria de la tarjeta inteligente también tiene un inconveniente: la falta de compatibilidad con algunas características del idioma (como se describe anteriormente) y la limitación en el tamaño del subprograma. Hay formas de eludir el límite de tamaño: por ejemplo, dividiendo el código de la aplicación en paquetes que no superen los 64 KB cada uno.

Desarrollo

Las técnicas de programación utilizadas en una aplicación típica de Java Card difieren significativamente de las utilizadas en Java SE. Sin embargo, el hecho de que Java Card sea un subconjunto estricto del lenguaje Java acelera en gran medida la curva de aprendizaje de la tecnología y también hace posible utilizar el entorno Java SE para desarrollar y depurar aplicaciones. Además, puede ejecutar y depurar conjuntamente en el mismo entorno tanto la aplicación Java Card como su parte del servidor, que se supone que debe ejecutarse en una PC.

Sin embargo, debe verificar periódicamente que la aplicación cumpla con las restricciones de Java Card al compilarla en el código de bytes apropiado, así como probarla en una tarjeta inteligente real para tener una idea del rendimiento de un dispositivo real.

Enlaces

Véase también

Notas

  1. Solicitud provisional de EE. UU. N.° de serie 60/029.057 presentada en octubre 25, 1996, solicitud no provisional núm. 957512 presentada el 24/10/1997, emitida como patente
  2. Sun Microsystems anuncia Java Card API , Business Wire, octubre de 2010. 29, 1996
  3. Descripción general de la plataforma Java Card en el sitio web de Sun. Consultado el 2 de agosto de 2008. Archivado desde el original el 20 de julio de 2008.
  4. Preguntas frecuentes sobre la tecnología Java Card . Consultado el 8 de agosto de 2008. Archivado desde el original el 29 de mayo de 2008.