λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

μžλ°” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°(μ‹œμŠ€ν…œ 속성) System.property() μ‚¬μš©λ²•

by 5566 2023. 11. 12.

1. μžλ°” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°(System Property)λž€?

μžλ°”μ—μ„œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°(System Property)λŠ” μ‹œμŠ€ν…œμ˜ 속성 값을 λ‚˜νƒ€λ‚΄λŠ” ν‚€-κ°’ ν˜•νƒœμ˜ 데이터이닀. μ΄λŸ¬ν•œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” μžλ°” λŸ°νƒ€μž„ ν™˜κ²½μ—μ„œ μ‚¬μš©λ˜λŠ” λ‹€μ–‘ν•œ 정보λ₯Ό μ €μž₯ν•˜κ³  μžˆλ‹€. μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” μ‹œμŠ€ν…œμ˜ 섀정에 따라 λ™μ μœΌλ‘œ λ³€ν™”ν•  수 있으며, ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 정보λ₯Ό μ½κ±°λ‚˜ λ³€κ²½ν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆλ‹€.

μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” μžλ°”μ˜ System 클래슀λ₯Ό 톡해 μ ‘κ·Όν•  수 있으며, getProperty(String key) λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • ν”„λ‘œνΌν‹°μ˜ 값을 얻을 수 μžˆλ‹€. μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” 주둜 μ‹œμŠ€ν…œ ν™˜κ²½κ³Ό κ΄€λ ¨λœ 섀정값을 μ œκ³΅ν•˜λ©°, μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ νŠΉμ •ν•œ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” 데 ν™œμš©λ  수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄, java.version ν”„λ‘œνΌν‹°λŠ” ν˜„μž¬ μ‹€ν–‰ 쀑인 μžλ°” 가상 λ¨Έμ‹ μ˜ 버전을 λ‚˜νƒ€λ‚Έλ‹€. user.home ν”„λ‘œνΌν‹°λŠ” ν˜„μž¬ μ‚¬μš©μžμ˜ ν™ˆ 디렉토리 경둜λ₯Ό ν‘œμ‹œν•˜λ©°, file.separator ν”„λ‘œνΌν‹°λŠ” 파일 μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©λ˜λŠ” 경둜 ꡬ뢄 기호λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. μ΄λ ‡κ²Œ μžλ°” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” λ‹€μ–‘ν•œ μš©λ„λ‘œ ν™œμš©λ  수 μžˆλ‹€.

μžλ°” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” λ‹€μ–‘ν•œ 정보λ₯Ό μ œκ³΅ν•˜λ―€λ‘œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발과 디버깅에 μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆλ‹€. ν”„λ‘œνΌν‹° 값을 읽어와 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘μ„ λ™μ μœΌλ‘œ μ‘°μ •ν•˜κ±°λ‚˜, μ‹œμŠ€ν…œ ν™˜κ²½μ— 따라 λ‹€λ₯Έ λ™μž‘μ„ ν•˜λ„λ‘ μ„€μ •ν•  수 μžˆλ‹€. ν”„λ‘œνΌν‹°λ₯Ό 톡해 μ‹œμŠ€ν…œ ν™˜κ²½μ„ μœ μ—°ν•˜κ²Œ λ‹€λ£° 수 μžˆλŠ” μžλ°”μ˜ μž₯점을 μ΅œλŒ€ν•œ ν™œμš©ν•  수 μžˆλ‹€.

2. System.getProperty() λ©”μ†Œλ“œ μ†Œκ°œ

System.getProperty(String key)λŠ” μ§€μ •λœ 킀에 ν•΄λ‹Ήν•˜λŠ” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°μ˜ 값을 λ°˜ν™˜ν•˜λŠ” μžλ°”μ˜ λ©”μ†Œλ“œμ΄λ‹€. 이 λ©”μ†Œλ“œλŠ” key λ§€κ°œλ³€μˆ˜λ‘œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°μ˜ 이름을 전달받아 그에 ν•΄λ‹Ήν•˜λŠ” 값을 λ°˜ν™˜ν•œλ‹€. λ§Œμ•½ ν•΄λ‹Ήν•˜λŠ” ν”„λ‘œνΌν‹°κ°€ 없을 경우 null을 λ°˜ν™˜ν•œλ‹€.

λ©”μ†Œλ“œμ˜ μ‚¬μš©λ²•μ€ λ‹€μŒκ³Ό κ°™λ‹€:

public static String getProperty(String key)

μœ„μ˜ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° μ€‘μ—μ„œ key에 ν•΄λ‹Ήν•˜λŠ” 값을 λ°˜ν™˜ν•œλ‹€. 예λ₯Ό λ“€μ–΄, System.getProperty("java.version")을 ν˜ΈμΆœν•˜λ©΄ ν˜„μž¬ μ‹€ν–‰ 쀑인 μžλ°” 가상 λ¨Έμ‹ μ˜ 버전을 λ‚˜νƒ€λ‚΄λŠ” 값을 λ°˜ν™˜ν•œλ‹€.

key νŒŒλΌλ―Έν„°μ—λŠ” λ‹€μ–‘ν•œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό 지정할 수 μžˆλ‹€. 자주 μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°μ˜ λͺ‡ 가지 μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™λ‹€:

  • java.version : ν˜„μž¬ μ‹€ν–‰ 쀑인 μžλ°” 가상 λ¨Έμ‹ μ˜ 버전
  • user.home : ν˜„μž¬ μ‚¬μš©μžμ˜ ν™ˆ 디렉토리 경둜
  • file.separator : 파일 μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©λ˜λŠ” 경둜 ꡬ뢄 기호

μœ„μ˜ μ˜ˆμ‹œ 외에도 μ‹œμŠ€ν…œ ν™˜κ²½μ— 따라 λ‹€μ–‘ν•œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. System.getProperty() λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•˜λ©΄ μ΄λŸ¬ν•œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° 값을 μ†μ‰½κ²Œ μ½μ–΄μ˜¬ 수 μžˆλ‹€.

3. System Property의 μ‚¬μš© μ˜ˆμ‹œ

μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” λ‹€μ–‘ν•œ 정보λ₯Ό μ œκ³΅ν•˜λ―€λ‘œ, μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆλ‹€. μ•„λž˜λŠ” λͺ‡ 가지 μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°μ˜ μ‚¬μš© μ˜ˆμ‹œμ΄λ‹€.

3.1. μžλ°” 버전 확인

String javaVersion = System.getProperty("java.version");
System.out.println("ν˜„μž¬ μ‹€ν–‰ 쀑인 μžλ°” 버전은 " + javaVersion + "μž…λ‹ˆλ‹€.");

μœ„μ˜ μ˜ˆμ‹œ μ½”λ“œλŠ” java.version μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„μž¬ μ‹€ν–‰ 쀑인 μžλ°” 버전을 ν™•μΈν•˜λŠ” μ½”λ“œμ΄λ‹€. 이λ₯Ό 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹€ν–‰λ˜λŠ” ν™˜κ²½μ˜ μžλ°” 버전을 확인할 수 μžˆλ‹€.

3.2. μ‚¬μš©μž 디렉토리 경둜

String userHome = System.getProperty("user.home");
System.out.println("ν˜„μž¬ μ‚¬μš©μžμ˜ ν™ˆ 디렉토리 κ²½λ‘œλŠ” " + userHome + "μž…λ‹ˆλ‹€.");

μœ„μ˜ μ˜ˆμ‹œ μ½”λ“œλŠ” user.home μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„μž¬ μ‚¬μš©μžμ˜ ν™ˆ 디렉토리 경둜λ₯Ό ν™•μΈν•˜λŠ” μ½”λ“œμ΄λ‹€. 이λ₯Ό 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©μžμ˜ ν™ˆ 디렉토리에 μ ‘κ·Όν•  수 μžˆλ‹€.

3.3. 파일 경둜 ꡬ뢄 기호

String fileSeparator = System.getProperty("file.separator");
System.out.println("파일 μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©λ˜λŠ” 경둜 ꡬ뢄 κΈ°ν˜ΈλŠ” " + fileSeparator + "μž…λ‹ˆλ‹€.");

μœ„μ˜ μ˜ˆμ‹œ μ½”λ“œλŠ” file.separator μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜μ—¬ 파일 μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©λ˜λŠ” 경둜 ꡬ뢄 기호λ₯Ό ν™•μΈν•˜λŠ” μ½”λ“œμ΄λ‹€. 이λ₯Ό 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©λ˜λŠ” 파일 경둜λ₯Ό μ˜¬λ°”λ₯΄κ²Œ ꡬ뢄할 수 μžˆλ‹€.

μœ„μ˜ μ˜ˆμ‹œ 외에도 μ‹œμŠ€ν…œ ν™˜κ²½μ— 따라 λ‹€μ–‘ν•œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό ν™œμš©ν•  수 μžˆλ‹€. System.getProperty() λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ ν•„μš”ν•œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° 값을 μ½μ–΄μ™€μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘μ„ λ™μ μœΌλ‘œ μ‘°μ •ν•  수 μžˆλ‹€.

4. System Property의 μ„€μ • 방법

μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘μ„ μ œμ–΄ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” 값듀이닀. μ•„λž˜λŠ” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ„€μ •ν•˜λŠ” λ‹€μ–‘ν•œ 방법에 λŒ€ν•œ μ„€λͺ…이닀.

4.1. JVM μ˜΅μ…˜μœΌλ‘œ μ„€μ •ν•˜κΈ°

κ°€μž₯ 일반적인 방법은 java λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹€ν–‰ν•  λ•Œ JVM μ˜΅μ…˜μœΌλ‘œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ§€μ •ν•˜λŠ” 것이닀. JVM μ˜΅μ…˜μ€ -D ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ μ„€μ •λœλ‹€.

λ‹€μŒμ€ java.version ν”„λ‘œνΌν‹°λ₯Ό 1.8.0_211 κ°’μœΌλ‘œ μ„€μ •ν•˜λŠ” μ˜ˆμ‹œμ΄λ‹€.

java -Djava.version=1.8.0_211 MyApp

μœ„μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ MyApp μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹€ν–‰λ˜λ©°, ν•΄λ‹Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” System.getProperty("java.version")을 ν˜ΈμΆœν•˜λ©΄ μ„€μ •ν•œ 값인 1.8.0_211이 λ°˜ν™˜λœλ‹€.

4.2. μ†ŒμŠ€ μ½”λ“œμ—μ„œ 직접 μ„€μ •ν•˜κΈ°

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ†ŒμŠ€ μ½”λ“œμ—μ„œ 직접 μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ„€μ •ν•  μˆ˜λ„ μžˆλ‹€. 이 경우 System.setProperty() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€. setProperty(String key, String value) λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ„€μ •ν•œλ‹€.

λ‹€μŒμ€ java.version ν”„λ‘œνΌν‹°λ₯Ό 1.8.0_211 κ°’μœΌλ‘œ μ„€μ •ν•˜λŠ” μ˜ˆμ‹œμ΄λ‹€.

System.setProperty("java.version", "1.8.0_211");

μœ„μ˜ μ½”λ“œλ₯Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ΄ˆκΈ°ν™” 둜직 λ“±μ—μ„œ ν˜ΈμΆœν•˜λ©΄, 이후 System.getProperty("java.version")을 ν˜ΈμΆœν•˜λ©΄ μ„€μ •ν•œ 값인 1.8.0_211이 λ°˜ν™˜λœλ‹€.

4.3. νŠΉμ • νŒŒμΌμ—μ„œ μ„€μ •ν•˜κΈ°

λ•Œλ‘œλŠ” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ™ΈλΆ€μ—μ„œ μ„€μ •ν•˜κ³  싢을 μˆ˜λ„ μžˆλ‹€. 이λ₯Ό μœ„ν•΄ μžλ°”λŠ” νŠΉμ • νŒŒμΌμ— μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ„€μ •ν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•œλ‹€.

일반적으둜 java.util.Properties 객체λ₯Ό μ‚¬μš©ν•˜μ—¬ ν”„λ‘œνΌν‹° νŒŒμΌμ„ 읽고 μ„€μ •ν•œλ‹€.

ν”„λ‘œνΌν‹° 파일 μ˜ˆμ‹œ (myapp.properties):

java.version=1.8.0_211

μžλ°” μ½”λ“œλ‘œ ν”„λ‘œνΌν‹° νŒŒμΌμ„ 읽고 μ„€μ •ν•˜λŠ” μ˜ˆμ‹œ:

Properties properties = new Properties();
try (InputStream inputStream = new FileInputStream("myapp.properties")) {
    properties.load(inputStream);
    for (String key : properties.stringPropertyNames()) {
        System.setProperty(key, properties.getProperty(key));
    }
} catch (IOException e) {
    e.printStackTrace();
}

μœ„μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ myapp.properties νŒŒμΌμ—μ„œ 읽은 값을 μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ‘œ μ„€μ •ν•œλ‹€.

μœ„μ˜ 방법듀을 적절히 μ‘°ν•©ν•˜μ—¬ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ„€μ •ν•˜λ©΄, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘μ„ μœ μ—°ν•˜κ²Œ μ œμ–΄ν•  수 μžˆλ‹€.

5. μžλ°” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° κ΄€λ ¨ μ£Όμ˜μ‚¬ν•­

μžλ°” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•  λ•Œ μ£Όμ˜ν•΄μ•Ό ν•  λͺ‡ 가지 사항듀이 μžˆλ‹€. μ•„λž˜λŠ” μžλ°” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° κ΄€λ ¨ μ£Όμ˜μ‚¬ν•­λ“€μ— λŒ€ν•œ μ„€λͺ…이닀.

5.1. λ³΄μ•ˆ 주의

μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘κ³Ό κ΄€λ ¨λœ μ€‘μš”ν•œ 값을 λ‹΄κΈ° λ•Œλ¬Έμ—, λ³΄μ•ˆμ— μ£Όμ˜ν•΄μ•Ό ν•œλ‹€. μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°μ— λ―Όκ°ν•œ 정보λ₯Ό μ €μž₯ν•˜λ©΄ 이λ₯Ό μ•…μ˜μ μœΌλ‘œ ν™œμš©ν•  수 μžˆλŠ” μœ„ν—˜μ΄ μ‘΄μž¬ν•œλ‹€.

λ”°λΌμ„œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•  λ•Œμ—λŠ” λ³΄μ•ˆ 정책을 λ”°λ₯΄κ³  μ μ ˆν•œ μ•”ν˜Έν™” κΈ°μˆ μ„ μ μš©ν•˜μ—¬ ν”„λ‘œνΌν‹° 값을 λ³΄ν˜Έν•˜λŠ” 것이 μ’‹λ‹€.

5.2. 읽기 μ „μš©

μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” JVM이 μ‹€ν–‰λ˜λŠ” μ‹œμŠ€ν…œ ν™˜κ²½μ— λŒ€ν•œ 정보λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” 값듀이닀. λ”°λΌμ„œ, μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” 읽기 μ „μš©μœΌλ‘œ κ°„μ£Όν•΄μ•Ό ν•œλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μˆ˜μ •ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” 것은 λ°”λžŒμ§ν•˜μ§€ μ•Šλ‹€. 읽기 μ „μš©μœΌλ‘œ μ‚¬μš©λ˜λŠ” ν”„λ‘œνΌν‹° 값을 λ³€κ²½ν•˜λ©΄, JVM의 λ™μž‘μ΄ μ˜ˆμƒμΉ˜ λͺ»ν•˜κ²Œ λ³€κ²½λ˜μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ•ˆμ •μ„±μ— λ¬Έμ œκ°€ 생길 수 μžˆλ‹€.

5.3. κ°€λ³€μ„± 주의

μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” JVM이 μ‹€ν–‰λ˜λŠ” μ‹œμŠ€ν…œ ν™˜κ²½μ— 따라 λ™μ μœΌλ‘œ 변경될 수 μžˆλ‹€. λ”°λΌμ„œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° 값을 읽어와 μ‚¬μš©ν•  λ•Œμ—λŠ” 가변성을 κ³ λ €ν•΄μ•Ό ν•œλ‹€.

예λ₯Ό λ“€μ–΄, ν•œ 번 μ½μ–΄μ˜¨ μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° 값을 μΊμ‹œν•˜κ³  μž¬μ‚¬μš©ν•˜λŠ” 경우, ν”„λ‘œνΌν‹° 값이 λ™μ μœΌλ‘œ λ³€κ²½λ˜λŠ” 경우 λ³€κ²½λœ 값을 λ°˜μ˜ν•˜μ§€ λͺ»ν•˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€. λ”°λΌμ„œ, μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° 값을 자주 μ½μ–΄μ˜¨λ‹€λ©΄ 맀번 직접 μ½μ–΄μ˜€λŠ” 것을 κ³ λ €ν•΄μ•Ό ν•œλ‹€.

5.4. κΈ°λ³Έκ°’ μ„€μ •

μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λŠ” μ‹€ν–‰ ν™˜κ²½μ— 따라 μ‘΄μž¬ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆλ‹€. 이 경우, System.getProperty() λ©”μ†Œλ“œλŠ” null을 λ°˜ν™˜ν•œλ‹€. λ”°λΌμ„œ, μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° 값을 μ‚¬μš©ν•  λ•Œμ—λŠ” 기본값을 μ„€μ •ν•˜λŠ” 것이 μ’‹λ‹€.

String javaVersion = System.getProperty("java.version", "Unknown");

μœ„μ˜ μ˜ˆμ‹œ μ½”λ“œλŠ” java.version μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹° 값을 μ½μ–΄μ˜€λ˜, 값이 μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우 κΈ°λ³Έκ°’μœΌλ‘œ "Unknown"을 μ‚¬μš©ν•˜λŠ” μ˜ˆμ‹œμ΄λ‹€. 기본값을 μ„€μ •ν•˜μ—¬ ν”„λ‘œνΌν‹° 값이 μ‘΄μž¬ν•˜μ§€ μ•Šμ•„λ„ μ•ˆμ „ν•˜κ²Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•  수 μžˆλ‹€.

μžλ°” μ‹œμŠ€ν…œ ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•  λ•Œ μœ„μ˜ μ£Όμ˜μ‚¬ν•­λ“€μ„ 염두에 λ‘λ©΄μ„œ μ•ˆμ „ν•˜κ³  효율적으둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  수 μžˆλ‹€.

λŒ“κΈ€