Hace ya unos pocos años que disponemos de la
tecnología
de componentes de Microsoft,
bien la llamemos COM, DCOM, ActiveX, CDOM+ (ya que realmente poca
gente sabe la diferencia entre estos términos)
…
Hoy en día mal se concibe el desarrollo
Windows sin el
uso intensivo de estos componentes (sobre todo en VBasic).
Ya es de lo mas normal que una aplicación llame a Excel o
Word o
arranque el Outlook para mandar un correo.
Es posible que también nos interese invocar a
estos componentes desde Java lo
cual veréis que no es tan complicado… Para hacerlo,
hasta ahora había utilizado Microsoft Visual J++ y su
herramienta JActiveX pero, hay que buscar más opciones por
dos razones:
- Incapacidad de encontrar nuevas referencias a
integración Java en el Web de
Microsoft (SDK for Java, máquina virtual,
etc.) - Deseo de mucha gente de usar software
gratuito
Hoy os voy a comentar como se puede hacer con una
solución llamada JACOB http://danadler.com/jacob
Nos vamos al Web y descargamos el producto:
JAva COM Bridge
Nos interesan fundamentalmente dos ficheros (jacob.dll y
jacob.jar)
Vamos a instalarlos como una extensión de java
( http://danadler.com/jacob/jacobfaq.html
)
Verificamos que tenemos una máquina virtual java
instalada
En el directorio %java_home%/jre/bin copiamos la
dll
En el directorio
%java_home%/jre/lib/ext copiamos el jar
Voy a montar el ejemplo con jcreator (para variar un
poco 😉 )
El código
es bastante simple y vamos a atacar al
servidor de Automatización OLE del tutorial anterior,
construido en Visual C++
import com.jacob.com.*; public class LlamadaDcom { static void depura(String cadena) public static void main(String[] args) { depura("Arrancamos la ActiveXComponent sC = new Variant result = Dispatch.call(sControl, } |
Y simplemente compilando y ejecutando, ya lo
tenemos
Otras soluciones a
estudiar
Hay muchas otras opciones … cada una con sus ventajas
e inconvenientes (escribidme si conocéis alguna
más)
Siempre hay muchas opciones para hacer las cosas…. la
gracia es buscar la más adecuada en cada caso.
Como complemento os diré utilizando las nuevas
capacidades de anotaciones de Java
1.5 (o también con Xdoclet),
podríamos ser capaces de construir clases envoltorio Java
(Wrappers) de nuestros componentes DCOM de un modo bastante
sencillo
Cuando mucha gente me pregunta sorprendido que porque
comparto todas estas cosas … la respuesta es sencilla … que
es más importante saber como se hace algo puntualmente o
la visión de saber cuando es apropiado su uso (que solo
dan los años de experiencia ;-). El
conocimiento táctico dura meses, el estratégico
años ….
Roberto Canales Mora
www.adictosaltrabajo.com