2009-07-28 5 views
1

이론적으로 이것은 나에게 가능할 것 같다. 가능한 한 모든 사람이이 사실을 확인해 줄 수 있습니까? (Java to C++이나 C# 같은)Java로 작성된 코드를 다른 언어로 전송/변환 할 수 있습니까?

일반적으로 Java와 같은 언어를 PHP와 같은 서버 측 프로그래밍 언어로 전송할 수 있습니까?

+0

많은 사람들의 사이에 http://stackoverflow.com/questions/556807/java-to-c-converter-tool의 중복 –

답변

6

한 언어의 구문 요소를 번역하고 다른 언어를 만드는 것은 사소하지 않지만 불가능하지 않습니다. 좋은 구문 분석기는 구문 트리를 한 언어로 작성한 다음 다른 언어로 내보낼 수 있습니다. 간단한 "안녕하세요"형 응용 프로그램의 컨텍스트 외부에서 코드를 이식의 어려움은 두 가지이다 : 하나 개의 언어의

  1. 라이브러리는 아마도 (스윙 대 예를 들어 윈폼)
  2. 일부 언어 기능은 음식을 장만해야 할 것 다릅니다 for : (λ 식, 익명 메소드, 다른 상속 구현 등).
5

Java의 경우 매우 큰 런타임 라이브러리가 가능하지만 완전히 자동 변환을 수행하려면 대상 언어에서 사용할 수 있어야합니다.

Java -> .NET의 특수한 경우에는 Microsoft의 J #을 사용하여이를 .NET 어셈블리로 컴파일 한 다음 사용할 수 있습니다. 또한 ikvm.net은 .NET 내부에서 JVM을 실행할 수 있습니다.

PHP의 경우 이러한 솔루션이 존재하지 않는다고 생각합니다. gcj를 사용하여 링크 될 수있는 네이티브 라이브러리를 생성 할 수는 있지만 가능하다고 생각하지는 않습니다.

PHP에서 어떤 기능이 필요합니까?

+0

구체적으로 구체적인 것은 없습니다! 이미 Java로 작성된 코드를 다른 언어로 이전 할 수 있는지 궁금합니다. –

+1

대부분의 현대 언어는 튜링 완료이므로 가능합니다. 불행히도 가장 먼저 코드를 포팅하는 것보다 더 많은 작업이 필요합니다. –

+0

큰 시스템을 번역해야하는 경우 변환기를 작성하고 수동으로 포스트 클린업을 수행하면 코드를 수동으로 포팅하는 것보다 훨씬 쉽고 안정적입니다. 가트너 그룹 (Gartner Group)은 하루에 약 140 행의 코드를 유사한 언어로 번역 할 수 있다고 생각합니다. 그렇지 않으면 똑똑한 사람들은 당신을 믿지 않아야한다고 주장 할 수 있습니다. 언어가 많이 다를 경우 악화됩니다. 백만 줄의 코드를 이동해야한다면, ~ 7100 인 - 일 또는 32 인 - 년이 필요합니다. 우리는 번역사 (정교한 도구 사용)를 약 1 ~ 2 년 내에 구축합니다. (http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html 참조) –

5

Visual Studio에는 Java to C# 변환기가 포함되어 있으며 상당히 까다로운 작업을 수행하기도하지만 이후에는 정리가 많이 필요합니다.

내 경험에 따르면 한 언어에서 다른 언어로 코드를 변환하는 것이 합리적인지 스스로 물어야합니다. 이득은 무엇입니까? 번역 된 코드를 유지 보수 할 수 있습니까? 이 질문에 대한 답변이 잘못된 방향을 가리키면 번역이 올바른 방법이 아닐 수 있습니다.

2

구글 웹 툴킷은 자바 스크립트를 자바에서 변환을 수행합니다

http://code.google.com/webtoolkit/overview.html

+0

흥미 롭습니다 :) Swing을 사용하는 인터페이스를 HTML 디자인으로도 이전합니까? –

+1

아니요, GWT 호환 툴킷 (예 : GWT 또는 EXT-GWT 등)을 사용하여 인터페이스를 설계해야합니다. –

1

귀하의 질문에 대답하기 위해, 그래, 이론적으로이 실제로 가능하며 실질적으로 같은 기술이 매일 :)

에게 사용된다 흥미로운 것은 Java 코드 변환기가 일반적으로 소스 코드가 아닌 바이트 코드를 사용하여 변환된다는 것입니다. 그런 다음 바이트 코드에서 ObjectiveC 소스 코드입니다. 일부 변환기 (적어도 하나의 오픈 소스 코드)는 바이트 코드에서 XML로, XML에서 대상 언어로 변환됩니다.

예를 들어 iPhone에 대한 Uniwar 응용 프로그램은 모두가 인정하고 appStore의 톱 10으로 나아 갔으며 Java (JME)로 작성되었으며 Java 바이트 코드에서 자동으로 변환되었습니다. 심지어는 며칠 동안 상위 10 위 안에 들기 때문에 많은 컴퓨터에 배포된다는 것을 의미합니다.)

Real-World [TM], Cobol-Java 및 이상하게 Java-Cobol은 전례가 없습니다. .당신이

+1

유지 보수 가능한 코드를 얻는 것이 목표라면 바이트 코드 기반 변환기를 정리할 것입니다. 처음에는 원본 소스 코드의 모든 주석을 잃게됩니다. –

+0

그러나 "알 수없는 (야후)"는 번역 횟수를 최소화하는 것이 더 바람직하지 않습니다 ... 매번 우리가 그 일을 할 때마다 우리는 어떻게 든 정확성의 일부를 잃을 것입니다 ... "Stephen C"나는 말하기 ... 당신은 좋은 지적을 가지고 있습니다 ... 특별히 제 제안은 서로 다른 언어의 프로그래머들이 서로를 더 쉽게 이해할 수있게하는 것입니다 ... 프로그래머 X 씨는 Java가 소프트웨어의 논리를 이해할 수 있음을 알고 있습니다. 그 중 프로그래머 Y 씨가 언어를 배울 필요없이 C++을 사용하여 만든 것입니다 ... –

1

이 이론적으로는 가능하다 : 정말 좋은 컨버터를 필요 말했다 작업에 대한 모든이를 위해

. 그러나 다른 사람들이 지적한 것처럼 주요한 문제는 도서관을 번역하는 것입니다.

얼마 전 Tcl (XOTcl)과 Java에서 Python 번역기로 변환 가능성을 평가하기 위해 Java를 만들었습니다. 으로 검색 java2tclyava2python으로 검색하십시오.

구문을 변환하지만 관련 구문 번역 (예 : Java 파일 작업을 Python 구문으로 변환)을 수행하지 않습니다. 그렇게하려면 더 많은 개발 시간이 필요합니다.

일반적으로 내 의견은 그러한 번역이 가능할 수 있다는 것입니다. 그러나 번역자가 변환 된 프로젝트의 클래스/라이브러리를 다루는 경우에만 가능합니다.

관련 문제