2012-09-16 5 views
0

JRE 또는 다른 런타임 환경을 사용하여 Apache 또는 Nginx와 같은 웹 서버에서 Java 코드를 컴파일 할 수 있습니까? 특히 사용자 입력 (Java 코드)을 받아들이는 웹 응용 프로그램을 갖고 싶습니다. 사용자가 실행되면 Java를 Java Byte 코드로 컴파일하고 결과를 표시합니다 (Eclipse처럼).
이러한 종류의 기술이 존재합니까? 컴파일 된 언어의 논리를 무시합니까? 미리 감사드립니다. Amicably, James웹 서버에서 Java를 컴파일 할 수 있습니까?

답변

4

Apache를 실행하는 서버에도 JDK가 필요합니다. 입력을 파일에 쉽게 기록하고, 컴파일하고, 실행하고 결과를 사용자에게 표시 할 수 있습니다. 이 작업은 Tomcat에서 실행되는 CGI 스크립트 또는 Java EE 응용 프로그램 또는 이와 유사한 방법으로 수행 할 수 있습니다. JDK가 필요하며 JRE로는 충분하지 않습니다.

잠재적 인 보안 위험을 고려해보십시오. 프로그램이 실제로하는 일에 따라 컴퓨터 나 다른 컴퓨터에서 문제가 발생할 수 있습니다.

+1

보안에 대한 Beau의 의견을 바로 지원합니다. 사용자가 작성하는 코드는 서버에서 실행됩니다. 그는 파일에 액세스하고 시스템 호출 등을 할 수 있습니다. Java의 보안 관리자를 사용하여이를 강화하고 Java 프로세스를 제한하는 것이 가능하지만 수행중인 작업을 실제로 알지 못하면이 작업을 수행하지 마십시오. – sstendal

+0

굉장하다. 감사. 그러나 컴파일 요청이 서버로 전송 될 때마다 VM에서 Java 코드를 실행할 수 있습니까? –

1

물론 가능합니다. 그러나 JDK와 소스 코드를 입력으로 받아 Java 컴파일러를 호출하여 코드를 컴파일하는 서버 측 스크립트 (PHP, Ruby, Python, Java 등)가 필요합니다.
보안 고려 사항을 고려해야합니다. 모든 사용자는 서버에서 실행될 코드를 업로드 할 수 있습니다. 따라서 코드가 샌드 박스에서 실행되는지 확인해야합니다.

1

이 작업을 수행하는 여러 웹 사이트가 있습니다. 제가 사용한 것은 http://www.ideone.com입니다.

JDK 및 다양한 스크립트를 사용하여이를 재현하거나 처음부터 고유 한 컴파일러를 작성할 수 있습니다. 어느 쪽이든 실제로 코드를 컴파일하기 위해서는 어떤 종류의 컴파일러가 필요합니다.

관련 문제