2014-03-24 4 views
1

C/C++/Java에서 서버/클라이언트 코드를 만들 수 있습니까? 플랫폼에 독립적 일 수 있습니까?추가 패키지가없는 C/C++/java 플랫폼 독립적 인 코드

실행 가능한 실행 파일 (Windows/Linux/Mac에서 가능한 경우)에만 시스템에 추가 패키지 (예 : JVM 요구 사항 없음)를 설치할 필요가 없습니다.

그렇지 않다면 이것을 달성하기 위해 다른 방법 (어쩌면 언어)을 말해 줄 수 있습니까? 감사합니다.

+0

자바 가능 –

+0

@cyberworm하지만 Java는 JVM 설치가 필요합니다. 해당 시스템에 JVM을 설치할 필요없이 어떻게 수행 할 수 있습니까? – user1575044

+0

C++에는 거의 독립적 인 플랫폼을 작성할 수있는 QT 프레임 워크가 있지만 최종 사용자를위한 패키지가 필요한지 확실하지 않습니다 – CucumisSativus

답변

2

실행할 실행 파일 (가능한 경우 Windows/Linux/Mac).

이 코드는 이식 가능한 코드를 작성하고 정적 링크를 사용하여 DLL을 바인드함으로써 수행 할 수 있습니다. 단점은 훨씬 더 큰 실행 파일로 끝나게된다는 것입니다. 자바는 당신이 진술 한 것처럼 그것을 지배하는 JVM을 사용합니다.

컴파일 된 플랫폼 만 실행 파일이 작동하는 대상이됩니다. 따라서 Windows에서 컴파일 된 프로그램은 Ubuntu에서 작동하지 않습니다. (아마도 Wine에 .exe를 설치하지 않으면 별도의 버전을 컴파일해야합니다.)

+0

씬 클라이언트를 만들기 위해 크기가 커질 수 있습니다. 정적 바인딩 후에도 컴파일을 완료해야합니까? – user1575044

+0

@ user1575044 이것은 얼마만큼의 코드와 의존성을 갖는가에 달려 있습니다. 나는 정확한 숫자를 줄 수는 없지만, 작은 인터페이스 어플리케이션을 위해서는 3-10MB 정도가되어야한다. 그리고 네, 당신은 정적 연결을 설정하고 컴파일합니다. –

1

간단한 대답 : 아니오! (각 플랫폼별로 독립적으로 컴파일하지 않으려는 경우)

플랫폼 대상 코드가 필요하거나 Java 바이트 코드가있는 JVM 또는 MSIL (Microsoft Intermediate Language)이있는 .NET Framework와 같은 미들웨어가 필요합니다. node.js도 미들웨어로 간주 될 수 있습니다.

linux/mac에서 .NET Framework를 사용할 수 없으므로 Java를 사용하는 것이 좋습니다.

C++ 및 Qt에서 정적 바인딩을 사용하거나 바이너리에 미들웨어를 추가하는 것과 같은 것이면. 여전히 기존의 광범위한 미들웨어 Java 사용을 권장합니다.

+1

정적 연결 및 Qt는 어떻게됩니까? –

+0

Launch4j 또는 exe4j와 같은 래퍼가 작업을 수행합니다. – user1575044

+1

나는 그것이 적절한 대답이라고 생각하지 않습니다. 제 3 자 라이브러리 (Qt와 같은 괴물조차도 아님)가있을 수 있으며, 이는 크로스 플랫폼이며 필요한 기능을 제공합니다. – lapk