Unindo Java ao Delphi

Olá, como vão?
Estou desenvolvendo um projeto em java em necessito integrar uma parte ao sistema feita em delphi.
Eu desenvolvi uma aplicação em delphi utilizando a ferramento QR - QuickReport, onde ele utiliza o mesmo banco de dados da minha aplicação em java.
Agora preciso puxar o delphi para a minha aplicação java, alguem tem uma ideia de como eu poderia fazer isso?

O que você quer dizer com “puxar o delphi para a minha aplicação java”?

Seria iniciar a execução da aplicação Delphi a partir da Java?

Olá dani_bera, tudo bem?
A solução que eu enxergo para seu problema é fazer uma espécie de PIPE entre os programas. Você teria que pegar a saída gerada pelo seu programa em delphi e transmiti-la para seu programa em Java. Tipo, suponhamos que você tenha o seguinte código em C:

#include<stdio.h> int main(void) { printf("Teste com PIPE"); return 0; }

Agora você tem o seguinte código em Java:

[code]import java.io.IOException;
import java.io.InputStream;

public class Main {

/**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
            int c;
	String message="";
	String path = "D:\Matheus\Dados\projetos\eclipse\cpp\projeto\Debug\projcpp.exe";//Path de onde se encontra o executável de sua aplicação em C
	System.out.println("Entre com uma mensagem: ");
	Process proc = Runtime.getRuntime().exec("cmd.exe /C " + path);
	InputStream input = proc.getInputStream();//Pega a saída gerada pela sua aplicação
	while(true)
	{
		int c = input.read();
		if(c!=-1)
		{
			message += (char)c;
		}else
			break;
	}
	System.out.println("Mensagem gerada em linguagem C: ");
	System.out.println(message);
}

}
[/code]

Ao executar esse código Java, você verá a seguinte saída:
Teste com PIPE

Você pode adaptar esse pequeno código para pegar a saída gerada pela sua aplicação em Delphi e enviá-la para sua aplicação em Java.
Bom, espero ter ajudado.

Tinha pensado em fazer um botão na minha aplicação java chamado “Gerar relatórios” para a partir dele abrir a aplicação em delphi.

Neste caso, use o getRuntime().exec ou a classe ProcessBuilder. Você precisará adicionar em sua aplicação Delphi alguns parâmetros de linha de comando, para abrir o relatório correto diretamente.

Então ficou mais fácil ainda. No action do seu botão, coloque somente isso:

Runtime.getRuntime().exec("cmd.exe /C " + PathCompletodaSuaAplicação)

EDIT: Mandei a resposta ao mesmo tempo que você Vini

Obrigada pela ajuda matheuslmota e ViniGodoy.
Vou tentar seguir a sugestão de vocês aqui.
:slight_smile:

Onde trabalho precisamos disso e implementamos comunicação entre as duas ferramentas utilizando web services. O Java funcionou como nosso servidor de aplicações e alguns arquivos de transformação alimentavam nossos clientDataSet no Delphi.

[quote=marcosalex]Onde trabalho precisamos disso e implementamos comunicação entre as duas ferramentas utilizando web services. O Java funcionou como nosso servidor de aplicações e alguns arquivos de transformação alimentavam nossos clientDataSet no Delphi.

[/quote]

Eu já vi uma solução parecida para integrar um programa em C++ com outro em Java. Tentaram usar JNA de tudo que era forma, mas nunca dava certo. Então a ideia foi usar sockets para ligar as aplicações usando um sistema cliente-servidor, com a aplicação em Java como cliente da aplicação em C++.

É que no meu caso é mais um trabalho de TCC. E como a grade de programação envolvia java e delphi precisei criar um programa que tivesse as duas linguagens juntas.