Como el acceso y el uso de Java biblioteca / paquete en Smalltalk

rnso:

Se mencionó en los comentarios sobre otra pregunta Stackoverflow de que puede ser posible acceder a los paquetes de Java desde Smalltalk.

Sin embargo, no he podido encontrar ninguna información sobre esto en búsqueda de la red.

Cualquier penetración en este sentido será muy apreciada.

JV:

En esencia, hay tres maneras de (re) utilización de código Java en Smalltalk / X:

  • Implementar enlaces de puerto / a Java utilizando JNI como Victor sugirió. Aunque no es portado a Smalltalk / X, esto se ha hecho por Johan Brichau et al. - buscar "JavaConnect",

  • entonces hay un "puente de Java" para conectarse a JVM remota y ejecutar código allí, desarrollado y utilizado por exepto en sus productos. Que yo sepa, este es un paquete patentada - que puede ser capaz de comprar una licencia para ello (o no). Para más detalles, es posible que desee preguntarle a exepto.

  • y, por último, está el STX: libjava que es un / X API Smalltalk para cargar clases Java se ejecuta directamente en Smalltalk / X tiempo de ejecución.

Cada una de estas opciones tiene sus ventajas y desventajas, como de costumbre. Me voy a centrar en el último - STX: libjava - este es el que @tukan tenía en mente.

STX: libjava

Exención de responsabilidad : I (re) diseñado y (re) aplicado la mayoría de STX: libjava a fin de tomar mis puntos de vista con el grano de la sal como soy parcial.

STX: libjava es un paquete que permite la carga de código Java en Smalltalk / X medio ambiente y ejecutarlo. Una vez cargado, no hay diferencia entre el código Java y objetos Java y el código Smalltalk y objetos de Smalltalk - Ambos viven en el mismo tiempo de ejecución (máquina virtual, si lo prefiere). De hecho, la mayor parte del tiempo de ejecución no se sabe (y no le importa) si se administra objeto o método es en realidad un Smalltalk uno o Java. Sólo hay dos componentes dentro del tiempo de ejecución que distinguen - que es un intérprete de código de bytes (desde Smalltalk / X código de bytes es muy diferente del código de bytes de Java) y frontend JIT compilador (por la misma razón). Debido a que no hay diferencia en cuanto al rendimiento entre la ejecución de Smalltalk o Java de código.

Ejemplo sencillo

Aquí está un ejemplo de la utilización de procesador XSLT SAXON implementado en Java de Smalltalk / X:

[
    config := JAVA net sf saxon Configuration new.
    config setAllNodesUntyped: true.
    factory := JAVA net sf saxon TransformerFactoryImpl new: config.
    stylesheet := factory newTemplates:
        (JAVA javax xml transform stream StreamSource new:
            (JAVA java io File new: 'cd.xsl')).
    input :=
        (JAVA javax xml transform stream StreamSource new:
            (JAVA java io File new: 'cd.xml')).
    output :=
        (JAVA javax xml transform stream StreamResult new:
            (JAVA java io File new: 'cd.html')).
    transformer := stylesheet newTransformer.
    transformer transform: input to: output.
] on: JAVA java io IOException do:[:ex|
    Transcript showCR:'I/O error: ', ex getMessage.
    ex printStackTrace.
] on: JAVA javax xml transform TransformerException  do:[:ex|
    Transcript showCR:'Transform error: ', ex getMessage.
    ex printStackTrace.
].

otras referencias

Siguiendo recursos le puede dar una mejor idea de qué se trata:

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=202518&siteId=1
Recomendado
Clasificación