2

꽤 일반적인 질문으로 보일 수 있지만, javac이 동시에 컴파일되지 않는 기술적 인 이유는 무엇입니까? 이클립스 컴파일러는 병렬이므로, javac을 사용하지 않는 이유는 무엇입니까?Javac이 여러 개의 코어에서 실행되지 않는 이유는 무엇입니까?

+1

"매우 기술적 인"이유는 Sun/Oracle이 javac 컴파일러를 그런 식으로 설계/구현하지 않았기 때문입니다. 오라클이 수익을 창출 할 수있는 제품을 제공하는 측면에서 볼 때 더 중요한 일이 있다고 생각합니다. –

+0

그러면 open jdk는 어떻게됩니까? – Snicolas

+0

어때? 거기에는 같은 추론이 적용됩니다. 사실 OpenJDK는 오라클 배지 된 JDK 릴리스와 동일한 코드베이스의 99.x %이며 같은 팀의 팀에 의해 개발되었습니다. –

답변

-2

내부 병렬이라면 javac 프로그램이 간단하다고 생각합니다. 그런 다음 많은 경쟁 조건을 처리해야합니다. 이는 복잡한 작업입니다. 멀티 코어를 활용하기 위해, 같은 목표에 도달하기 위해 여러 javac 프로세스를 만들 수 있습니다. makefile과 gcc는 이런 방식으로 작동합니다.

"계속 그것은 단순하고 바보"

1

컴파일러가 실제로 병렬로 작동하고 이클립스의 자바 컴파일러는 예외라고 말할 어떤 소스를 찾을 수없는 것은 매우 이례적인 일이다.

이클립스가 할 수있는 기능은 여러 파일을 동시에 병렬로 컴파일하는 것입니다. 이것은 Eclipse가 자체 Java 컴파일러와 함께 제공된다는 사실과는 관련이 없습니다. javac를 사용하면 병렬로 javac의 여러 인스턴스를 실행할 수 있습니다. 문제는 없습니다. 그리고 실제로 그것은 여러 스레드로 빌드를 실행할 때 maven과 같은 빌드 도구가하는 일입니다.

+0

다른 모듈에서 병렬로 컴파일하는 것을 의미합니까? Gradle도 그렇게 합니다만, 여기에서는 실제로 1 모듈을 병렬로 컴파일하는 것에 대해 이야기하고 있습니다. – Snicolas

+0

@Snicolas 나는 다른 파일을 병렬로 컴파일하는 것을 의미했습니다. 동일한 모듈의 여러 파일을 병렬로 컴파일하는 것이 가능합니다 (또는 모듈이없는 Java 버전에서이 작업을 수행하는 것). 단일 파일을 병렬로 컴파일하는 것은 불가능합니다. – sepp2k