'java' 명령어는 Java 프로그램을 컴파일합니까?
인터넷상의 대부분의 웹 사이트에는 다음과 같이 기술되어 있습니다.
'를 사용"
javac하여 ""를 합니다..java'파일'을 .javas uncommand'snowledge"
은 자바 , 실행하지 않았어요.javac츠키노
.hello.java:
public class Myclass {
public static void main(String[] args){
System.out.println("hello world");
}
}
그리고 뛰었습니다.
$ javac hello.java
이 경우 다음과 같은 오류가 발생합니다.
hello.java:1: error: class Myclass is public, should be declared in a file named Myclass.java
public class Myclass {
^
1 error
내가 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★javac이치노
$ java hello.java
hello world
java령어 프왜 는 약면면면, 면면면면면면면 if if if가 합니까?javac★★★★★★★★★★★★★★★★★?
자바 버전은 다음과 같습니다.
openjdk version "12.0.2" 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode)
Java 11 이전 버전에서는 코드를 실행하려면 먼저 컴파일한 후 실행할 수 있습니다.다음은 예를 제시하겠습니다.
javac test.java
java test
11 11을 사용할 수 .javac+java 뛰어도 .java코드를 컴파일하고 자동으로 실행할 수 있습니다.: " "는 주의해 ..class파일이 생성됩니다.하다
java test.java
<고객명>을java -help하다★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★마주친 입니다.java [options] <sourcefile> [args]이치노
$ java -help
Usage: java [options] <mainclass> [args...]
(to execute a class)
or java [options] -jar <jarfile> [args...]
(to execute a jar file)
or java [options] -m <module>[/<mainclass>] [args...]
java [options] --module <module>[/<mainclass>] [args...]
(to execute the main class in a module)
or java [options] <sourcefile> [args]
(to execute a single source-file program)
갱신:
@BillK가 지적한 바와 같이 OP는 다음과 같은 질문도 했습니다.
javac 명령어가 필요한 이유는 무엇입니까?
★★★★★★★★★★★★★★★★★★★★가 필요한 이유javac 창조하다.class현재와 같이 코드를 생성, 테스트, 배포, 실행, 공유 등을 할 수 있습니다.JEP 330의 동기는 기존 용도를 변경하지 않고 "Java의 초기 단계 및 소규모 유틸리티 프로그램 작성"을 쉽게 하기 위함이었다.
Java 11을 실행하고 있는 경우 단일 소스 파일을 실행할 수 있는 새로운 기능이 있습니다.단일 소스 컴파일러는 클래스 이름 대 파일 이름 측면에서 더 혼합적이기 때문에 실행할 수 있지만 성공적으로 컴파일을 수행할 수 없습니다.
이전 버전의 Java를 사용하는 경우 컴파일 오류, 특히 클래스 이름 주위에 현재 hello.java가 컴파일되지 않습니다.따라서 java hello.java를 호출하면 컴파일되지 않기 때문에 코드를 컴파일할 수 없습니다.
Java 명령어를 실행할 때 이전에 컴파일된 코드를 실행하고 있었을 가능성이 높습니다.
하려면 , 할 필요가 .basename.
인 경우 두 할 수 있습니다.javac;java시퀀스:
클래스 이름 변경
public class Hello또는이름 바꾸기
hello.java로.myclass.java.
그javaJava 11용 인터프리터는 이 요건을 부과하지 않습니다.를 포함하는 클래스main는 파일 내의 첫 번째 클래스인 한 임의의 이름을 가질 수 있습니다.이것은 주로 초보자용 학습 프로세스를 용이하게 하고 shebang을 사용한 "자바 스크립팅"을 가능하게 하기 위한 것이었다(참조).
네, 하지만 당신이 말하는 그런 방식은 아니에요.
를 사용하는 경우javac명령어를 사용하여 .class 파일을 .class 파일로 컴파일합니다.이 출력은 바이트 코드라고 불립니다.바이트 코드는 Java Virtual Machine 규격을 기반으로 하는 이론 CPU의 기계 코드(네이티브 명령)입니다.
이 가상 CPU 규격은 규격이 작성될 당시 일반적인 CPU 유형의 평균입니다.따라서 여러 CPU 유형에서 동일한 Java .class 파일을 쉽게 실행할 수 있습니다.
Java가 처음 출시되었을 때java명령어는 .class 파일을 읽고 바이트 코드 명령을 한 번에 하나씩 해석한 후 실제로 실행 중인 CPU의 동등한 네이티브 명령에 매핑합니다.이것은 효과가 있었지만 특별히 빠르지는 않았다.이 JIT(Just in Time) 컴파일이 Java 런타임에 추가되었습니다.
THE J와 IT it함 함 itjava명령어는 바이트 코드를 가져와 실행 중인 CPU의 네이티브명령어로 다시 컴파일합니다.현대의 Java 런타임은 백그라운드에서 JIT 컴파일을 하는 동안 바이트 코드를 해석하기 시작하고 실행 중인 애플리케이션을 프로파일링한 후 다른 최적화로 바이트 코드를 다시 컴파일하여 최상의 성능을 얻는 경향이 있습니다.
편집(다운된 유권자를 달래기 위해):
따라서 특정의 경우(v11보다 새로운 JRE를 실행하고 있는 경우) 코드는 2회 이상 컴파일됩니다(적어도).
- 바이트 코드에 대한 단일 .java 파일로서
- 바이트 코드를 해석할 때 JIT 컴파일러 경유(helloWorld의 경우 컴파일된 네이티브 코드를 실행할 시간이 없을 수 있음)
언급URL : https://stackoverflow.com/questions/58086412/does-the-java-command-compile-java-programs
'source' 카테고리의 다른 글
| vue.js 템플릿에 외부 스크립트 포함 (0) | 2022.07.17 |
|---|---|
| Nuxt js 프로젝트의 config stylelint 파일 (0) | 2022.07.17 |
| 오류: Java: 잘못된 대상 릴리스: 11 - IntelliJ IDEA (0) | 2022.07.17 |
| 자바에서는 언제 varargs를 사용합니까? (0) | 2022.07.17 |
| 포인터를 사용하는 이유 (0) | 2022.07.17 |