Java Basics

Java의 언어적인 νŠΉμ§• (Features of Java)

  • Simple

    C++보닀 κ°„λ‹¨ν•˜λ‹€ -> 근데 느림

    • Java의 κ°„κ²°ν•˜λ©΄μ„œλ„ λͺ…λ£Œν•œ 객체지ν–₯적 μ„€κ³„λŠ” μ‚¬μš©μžλ“€μ΄ 객체지ν–₯κ°œλ…μ„ 보닀 μ‰½κ²Œ μ΄ν•΄ν•˜κ³  ν™œμš©ν•  수 μžˆλ„λ‘ ν•˜μ—¬ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ μ €λ³€ν™•λŒ€μ— 크게 κΈ°μ—¬ν–ˆλ‹€.

  • Object-Oriented

    • 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄ 쀑 ν•˜λ‚˜λ‘œ 객체지ν–₯κ°œλ…μ˜ νŠΉμ§•μΈ 상속, μΊ‘μŠν™”, λ‹€ν˜•μ„±μ΄ 잘 적용된 μ–Έμ–΄λ‹€

  • Memory

    Garbage Collection => GCκ°€ λ©”λͺ¨λ¦¬ 관리!

    • μžλ°”λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©΄, Garbage Collectorκ°€ μžλ™μ μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό 관리해주기 λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ©”λͺ¨λ¦¬λ₯Ό λ”°λ‘œ κ΄€λ¦¬ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€

      • Garbage Collectorκ°€ μ—†λ‹€λ©΄, ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ©”λͺ¨λ¦¬λ₯Ό μ²΄ν¬ν•˜κ³  λ°˜ν™˜ν•˜λŠ” 일을 μˆ˜λ™μ μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Όν•  것이닀.

      • μžλ™μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•œλ‹€λŠ” 것이 λ‹€μ†Œ λΉ„νš¨μœ¨μ μΈ 면도 μžˆμ§€λ§Œ, ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 보닀 ν”„λ‘œκ·Έλž˜λ°μ— 집쀑할 수 μžˆλ„λ‘ 도와쀀닀.

  • Robust (==sturdy)

    • 이 μ½”λ“œκ°€ System을 κ±΄λ“œλ¦¬μ§€ μ•Šκ³  μ•ˆμ „ν•˜κ²Œ 돌 것인가.

  • Platform Independent

    μš΄μ˜μ²΄μ œμ— 독립적이닀 (JVM)

    -> OS μœ„μ— μžˆλŠ” Java Virtual Machine이 λ™μž‘

    • 기쑴의 μ–Έμ–΄λŠ” ν•œ μš΄μ˜μ²΄μ œμ— 맞게 개발된 ν”„λ‘œκ·Έλž¨μ„ λ‹€λ₯Έ μ’…λ₯˜μ˜ μš΄μ˜μ²΄μ œμ— μ μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ§Žμ€ λ…Έλ ₯이 ν•„μš”ν•˜μ˜€μ§€λ§Œ, Javaμ—μ„œλŠ” 더 이상 그런 λ…Έλ ₯을 ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€

      • μΌμ’…μ˜ emulator인 **Java Virtual Machine(JVM)**을 ν†΅ν•΄μ„œ κ°€λŠ₯ν•œ 것인데,

        • μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μ€ μš΄μ˜μ²΄μ œλ‚˜ ν•˜λ“œμ›¨μ–΄κ°€ μ•„λ‹Œ JVMν•˜κ³ λ§Œ ν†΅μ‹ ν•˜κ³ ,

        • JVM이 μžλ°” μ‘μš©ν”„λ‘œκ·Έλž¨μœΌλ‘œλΆ€ν„° 전달받은 λͺ…령을 ν•΄λ‹Ή μš΄μ˜μ²΄μ œκ°€ 이해할 수 μžˆλ„λ‘ λ³€ν™˜ν•˜μ—¬ μ „λ‹¬ν•œλ‹€.

    • μžλ°”λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ€ μš΄μ˜μ²΄μ œμ— λ…λ¦½μ μ΄μ§€λ§Œ, JVM은 μš΄μ˜μ²΄μ œμ— μ’…μ†μ μ΄μ–΄μ„œ, μ¬μ—μ„œλŠ” μ—¬λŸ¬ μš΄μ˜μ²΄μ œμ— μ„€μΉ˜ν•  수 μžˆλŠ” μ„œλ‘œ λ‹€λ₯Έ λ²„μ „μ˜ JVM을 μ œκ³΅ν•˜κ³  μžˆλ‹€

      • κ·Έλž˜μ„œ μžλ°”λ‘œ μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ€ μš΄μ˜μ²΄μ œμ™€ ν•˜λ“œμ›¨μ–΄μ— 관계없이 μ‹€ν–‰ κ°€λŠ₯ν•˜λ©° 이것을 "ν•œλ²ˆ μž‘μ„±ν•˜λ©΄, μ–΄λ””μ„œλ‚˜ μ‹€ν–‰λœλ‹€ (Write once, run anywhere)" κ³  ν‘œν˜„ν•˜κΈ°λ„ ν•œλ‹€

  • Multi-Threaded

    μžλ°”μ—μ„œλŠ” 운영체제의 도움 없이 ν”„λ‘œκ·Έλž¨ μ–Έμ–΄ μ°¨μ›μ—μ„œ κ΅¬ν˜„

    • 일반적으둜 multi-thread의 지원은 μ‚¬μš©λ˜λŠ” μš΄μ˜μ²΄μ œμ— 따라 κ΅¬ν˜„ 방법도 μƒμ΄ν•˜λ©°, 처리 방식도 λ‹€λ₯΄λ‹€.

    • κ·ΈλŸ¬λ‚˜, Javaμ—μ„œ κ°œλ°œλ˜λŠ” multi-thread ν”„λ‘œκ·Έλž¨μ€ μ‹œμŠ€ν…œκ³ΌλŠ” 관계없이 κ΅¬ν˜„ κ°€λŠ₯ν•˜λ©°, κ΄€λ ¨λœ library (Java API)κ°€ μ œκ³΅λ˜λ―€λ‘œ κ΅¬ν˜„μ΄ 쉽닀.

    • μ—¬λŸ¬ thread에 λŒ€ν•œ scheduling을 Java interpreterκ°€ λ‹΄λ‹Ήν•˜κ²Œ λœλ‹€

  • Secured

    : Java is pretty much "safe" unleses a third party is trying to exploit the JVM

  • Dynamic

    동적 λ‘œλ”© (Dynamic Loading)을 μ§€μ›ν•œλ‹€

    • 보톡 Java둜 μž‘μ„±λœ application은 μ—¬λŸ¬ 개의 class둜 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

    • JavaλŠ” 동적 λ‘œλ”©μ„ μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— μ‹€ν–‰ μ‹œμ— λͺ¨λ“  classκ°€ loading λ˜μ§€ μ•Šκ³ , ν•„μš”ν•œ μ‹œμ μ— classλ₯Ό load ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€.

    • 일뢀 classκ°€ λ³€κ²½λ˜μ–΄λ„ 전체 application을 λ‹€μ‹œ compileν•˜μ§€ μ•Šμ•„λ„ 되며, application에 λ³€κ²½ 사항이 λ°œμƒν•΄λ„ 비ꡐ적 적은 μž‘μ—…λ§ŒμœΌλ‘œλ„ μ²˜λ¦¬ν•  수 μžˆλŠ” μœ μ—°ν•œ application을 μž‘μ„±ν•  수 μžˆλ‹€

API (Application Programing Interface)

: Java System을 μ œμ–΄ν•˜κΈ° μœ„ν•΄ Javaμ—μ„œ μ œκ³΅ν•˜λŠ” λͺ…λ Ήμ–΄λ“€

ex) java. (= 졜초 버전 -> μ½”μ–΄ API), javaX. (ν™•μž₯ API) 등등…..

  • a list of all classes that are part of the Java development kit (JDK). It includes all Java packages, classes, and interfaces, along with their methods, fields, and constructors

JVM (Java Virtual Machine) - μžλ°” 가상 λ¨Έμ‹ 

Javaμ—μ„œλŠ” 각각의 μš΄μ˜μ²΄μ œμ— λ§žλŠ” JVM을 μ œκ³΅ν•¨

=> 컴파일 된 λͺ¨λ“  μžλ°” ν”„λ‘œκ·Έλž¨λ“€μ€ JVM을 톡해 κ·Έ μ–΄λ– ν•œ ν™˜κ²½μ—μ„œλ„ μˆ˜μ • μž‘μ—… 없이 μ–΄λ””μ„œλ“  μ‚¬μš© κ°€λŠ₯!

JVMκ³Ό 속도

  • 일반 application의 μ½”λ“œλŠ” OS만 거치고 ν•˜λ“œμ›¨μ–΄λ‘œ μ „λ‹¬λ˜λŠ”λ° λΉ„ν•΄,

    • Java application은 JVM을 ν•œ 번 더 거치고 ν•˜λ“œμ›¨μ–΄μ— 맞게 μ™„μ „νžˆ compile된 μƒνƒœκ°€ μ•„λ‹ˆκ³  **μ‹€ν–‰ μ‹œμ— 해석(interpret)**되기 λ•Œλ¬Έμ— 속도가 λŠλ¦¬λ‹€λŠ” 단점을 가지고 μžˆλ‹€

  • κ·ΈλŸ¬λ‚˜ μš”μ¦˜μ—” λ°”μ΄νŠΈμ½”λ“œ (compile 된 μžλ°” μ½”λ“œ)λ₯Ό ν•˜λ“œμ›¨μ–΄μ˜ κΈ°κ³„μ–΄λ‘œ λ°”λ‘œ λ³€ν™˜ν•΄ μ£ΌλŠ” JIT μ»΄νŒŒμΌλŸ¬μ™€ ν–₯μƒλœ μ΅œμ ν™˜ 기술이 μ μš©λ˜μ–΄μ„œ 속도 격차λ₯Ό 많이 μ€„μ˜€λ‹€

JVM의 κΈ°λŠ₯ 2가지

  1. to allow Java programs to run on any device or operating system

  2. to manage and optimize program memory

λžŒλ‹€μ‹(Lambda Expression)

: λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ '식(expression)'으둜 ν‘œν˜„ν•œ 것.

-> λ©”μ„œλ“œλ₯Ό λžŒλ‹€μ‹μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ λ©”μ„œλ“œμ˜ 이름과 λ°˜ν™˜κ°’μ΄ μ—†μ–΄μ§€λ―€λ‘œ, λžŒλ‹€μ‹μ„ '읡λͺ… ν•¨μˆ˜(anonymous function)'이라고도 ν•œλ‹€.

μžλ°”μ˜ ν”Œλž«νΌ

  1. J2SE -> 일반적인 λ°μŠ€ν¬νƒ‘ PC

​ (JAVA ν”„λ‘œκ·Έλž˜λ°μ˜ ν‘œμ€€μ΄ λ˜λŠ” ν™˜κ²½)

  1. J2EE -> μ„œλ²„μš© 컴퓨터

    (λΆ„μ‚°ν™˜κ²½ 지원 / λ„ˆλ¬΄ μ–΄λ ΅κ³ , λ™μž‘ν•  수 있게 ν•˜λŠ” μ„œλ²„ ν™˜κ²½μ΄ κ³ κ°€μž„)

  2. J2ME -> μ†Œν˜•μ œν’ˆ ex) νœ΄λŒ€ν°, PDA, 셋탑 λ°•μŠ€

-> (more info from Google)

JAVA SE (Java Platform Standard Edition)

λ°μŠ€ν¬ν†±, μ„œλ²„, μž„λ² λ””λ“œμ‹œμŠ€ν…œμ„ μœ„ν•œ ν‘œμ€€ μžλ°” ν”Œλž«νΌ. μžλ°” 가상머신 규격 및 API집합을 포함 JAVA EE,MEλŠ” λͺ©μ μ— 따라 SEλ₯Ό 기반으둜 기쑴의 일뢀λ₯Ό νƒν•˜κ±°λ‚˜ APIλ₯Ό μΆ”κ°€ν•˜μ—¬ κ΅¬μ„±λœλ‹€. SEλŠ” κ°€μž₯ 일반적으둜 μ‚¬μš©λœλ‹€. JDBCλ‚˜ 기본적인 κΈ°λŠ₯이 λͺ¨λ‘ ν¬ν•¨λ˜μ–΄ 있기 λ•Œλ¬Έμ— Androidκ°œλ°œν• λ•Œ 주둜 SEλ₯Ό μ‚¬μš©ν•œλ‹€.

JAVA EE (Java Platform EnterPrise Edition)

μžλ°”λ₯Ό μ΄μš©ν•œ μ„œλ²„μΈ‘ κ°œλ°œμ„ μœ„ν•œ ν”Œλž«νΌ. κΈ°μ‘΄ SE에 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ—μ„œ λ™μž‘ν•˜λŠ” λΆ„μ‚° λ©€ν‹°λ―Έλ””μ–΄λ₯Ό μ œκ³΅ν•˜λŠ” μžλ°”μ˜ κΈ°λŠ₯을 μΆ”κ°€ν•œ μ„œλ²„λ₯Ό μœ„ν•œ ν”Œλž«νΌ. JAVA SE에 μ„œλ²„μΈ‘μ„ μœ„ν•œ κΈ°λŠ₯을 λΆ€κ°€ν•˜μ˜€κΈ° λ•Œλ¬Έμ— SEκΈ°λŠ₯을 λͺ¨λ‘ ν¬ν•¨ν•œλ‹€.

JAVA ME (Java Platform Micro Edition)

μ΄λ¦„μ—μ„œ μ•Œ 수 μžˆλ“―μ΄ μž„λ² λ””λ“œλ₯Ό μœ„ν•œ μžλ°” ν”Œλž«νΌμ΄λ‹€. μžλ°” ν”Œλ ›νΌ, 마이크둜 μ—λ””μ…˜μ˜ μ•½μžμ΄λ‹€. Java ME λ˜λŠ” J2ME λ“±μœΌλ‘œ 뢈림 μ œν•œλœ μžμ›μ„ 가진 νœ΄λŒ€μ „ν™”, PDA, μ„ΈνŠΈν†±λ°•μŠ€ λ“±μ—μ„œ Javaν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μ§€μ›ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ ν”Œλž«νΌμ΄λ‹€

μžλ°” κ°œλ°œν™˜κ²½ μ„€μΉ˜

ν™˜κ²½λ³€μˆ˜ μ„€μ •ν•˜κΈ°

JAVA_HOME

Path -> μ‹€ν–‰νŒŒμΌμ„ μ°Ύμ•„μ˜€λŠ” 경둜

​ => μ‹€ν–‰ ν”„λ‘œκ·Έλž¨μ˜ μœ„μΉ˜λ§Œμ„ λ‚˜νƒ€λƒ„

Classpath -> 클래슀λ₯Ό μ°Ύμ•„μ˜€λŠ” 경둜

​ => μ‹€ν–‰ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜λŠ” 라이브러리의 μœ„μΉ˜λ₯Ό λ‚˜νƒ€λƒ„

=> Clλ³€μˆ˜κ°’μ— .; μž…λ ₯ν•˜λ©΄ μ§€κΈˆ λ‚΄κ°€ μžˆλŠ”κ³³μ„ κΈ°μ€€μœΌλ‘œ μ°ΎλŠ”λ‹€λŠ” 것!

JavaλŠ” 무쑰건 Classλ₯Ό λ””μžμΈ ν•˜λŠ” 것이닀!

JavaλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•œλ‹€!

public keyword

public Class  [classλͺ…] { }

-> Public λ„£μœΌλ©΄ λˆ„κ΅¬λ“ μ§€ κ°€μ Έλ‹€ μ“Έ 수 μžˆλ‹€λŠ” 뜻

Main Method

public static void main(String[] args) {}

=> Main function

-> Java Application을 κ΅¬λ™μ‹œν‚€λŠ” entry point(=start point) κ°€ λœλ‹€

-> method 이름 λ’€μ—λŠ” 무쑰건 ( ) κ°€ λ”°λΌλ‹€λ‹˜ => κ΄„ν˜Έκ°€ 있으면 ν•¨μˆ˜, μ—†μœΌλ©΄ λ³€μˆ˜!

  • static keyword: new keyword 없이 method μ„ μ–Έλ§ŒμœΌλ‘œλ„ λ©”λͺ¨λ¦¬μ— μ˜¬λ €μ£ΌλŠ” keyword

  • String: 데이터 νƒ€μž… -> λ¬Έμžμ—΄μ΄λ‹€

  • args: μ§€μ—­λ³€μˆ˜ (λ³€μˆ˜λͺ…)

  • void: μ½œν•œ μžλ¦¬μ— 리턴값(λ°˜ν™˜κ°’)이 μ—†λ‹€λŠ” 뜻 -> 이 λͺ…령문을 μ‹€ν–‰ν•˜κΈ°λ§Œ ν•œλ‹€λŠ” 뜻!

μ ‘κ·Ό μ œν•œμž (Access Modifier)

public : λͺ¨λ“  접근을 ν—ˆμš© protected : 동일 νŒ¨ν‚€μ§€μ™€ ν•˜μœ„ ν΄λž˜μŠ€μ—κ²Œ μ ‘κ·Ό ν—ˆμš© default : 동일 νŒ¨ν‚€μ§€μ—μ„œ μ ‘κ·Ό ν—ˆμš© private : ν˜„μž¬ 객체 λ‚΄μ—μ„œλ§Œ ν—ˆμš©

κ΅¬λΆ„μž (Delimeter)

  • class, variable, methodλ₯Ό κ΅¬λΆ„ν•˜λŠ” 이름

  • μ€‘λ³΅λ˜λ©΄ μ•ˆλœλ‹€

  • 첫 κΈ€μžλŠ” 영문자, _, $ κ°€λŠ₯

  • μ˜ˆμ•½μ–΄ (keyword)λŠ” μ“Έ 수 μ—†λ‹€

    ex) class, import, new, public, void, etc.

Class μ•ˆμ— λ“€μ–΄κ°ˆ 수 μžˆλŠ” 것 2가지

  1. Data ( = Variable λ³€μˆ˜)

    : λͺ…μ‚¬λŠ” Data!

  2. κΈ°λŠ₯ (= Method ν•¨μˆ˜)

    : λ™μ‚¬λŠ” method! => ~ ν•˜λ‹€ λΆ™μ—¬μ„œ 말되면 동사,,,

    -> λ‹€λ₯Έ μ–Έμ–΄μ—μ„œλŠ” Function이라고 함!

CLI vs GUI

CLI(Command Line Interface)

: 컴퓨터와 μ‚¬μš©μžκ°€ κΈ€μžλ‘œ λͺ…령을 μ£Όκ³  λ°›λŠ” 방식 (λͺ…λ Ήμ–΄λ‘œ μ²˜λ¦¬ν•˜λŠ” ν™˜κ²½)

ex) dos

  • ν‘œμ‹œ λ‚΄μš©μ΄λ‚˜ μž…λ ₯ λ‚΄μš©μ΄ 문자 베이슀인 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€

  • μ•„μ΄μ½˜μœΌλ‘œ ν‘œμ‹œν•˜κ³  마우슀 λ“±μ˜ 포인터 λ””λ°”μ΄μŠ€λ‘œ μž…λ ₯ν•˜λŠ” gui에 λΉ„ν•΄ resource (μ†Œν”„νŠΈμ›¨μ–΄μ˜ ν¬κΈ°λ‚˜ 램의 μš©λŸ‰, CPU의 μ„±λŠ₯)의 μ†ŒλΉ„κ°€ 적닀

  • μž‘λ™λ°©μ‹

    : mainμ—μ„œ μΆœλ°œν•˜μ—¬ 순차적으둜 μ•Œμ•„μ„œ 쭈욱 μ‹€ν–‰λ˜λŠ” ν˜•νƒœ

GUI (Graphical User Interface)

: κ·Έλž˜ν”½ ν™”λ©΄μ—μ„œ λ²„νŠΌμ„ λˆ„λ₯΄κ±°λ‚˜ ν•΄μ„œ μ»΄ν“¨ν„°μ—κ²Œ 일을 μ‹œν‚€λŠ” 방식

  • λͺ…λ Ήμ–΄ λŒ€μ‹  μ•„μ΄μ½˜μ„ λ”λΈ”ν΄λ¦­ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” ν™˜κ²½

  • κ·Έλž˜ν”½ ν™˜κ²½μ—μ„œ μž‘μ—… ν•˜λŠ” 것

  • μž‘λ™λ°©μ‹

    : μ‚¬μš©μžκ°€ λ²„νŠΌμ„ λˆ„λ₯΄κ±°λ‚˜ μ–΄λ–€ λͺ…령을 λ‚΄λ¦΄λ•Œ κΉŒμ§€ 기닀리닀가

λͺ…령을 λ°›μœΌλ©΄ ν•΄λ‹Ή 처리λ₯Ό ν•˜λŠ” 방식

Cmd (Command Prompt)

: λͺ…λ Ή ν”„λ‘¬ν¬νŠΈ -> CLI(Command Line Interface): λͺ…령을 μž…λ ₯ ν•΄μ•Όμ§€λ§Œ μž‘λ™ν•¨

컴파일 λͺ…λ Ήμ–΄

: cmd μ°½μ—μ„œ javac

(이 λͺ…λ Ήμ–΄κ°€ μ œλŒ€λ‘œ μ‹€ν–‰λ˜λ €λ©΄ ν™˜κ²½λ³€μˆ˜λ₯Ό μž‘μ•„μ•Όν•¨)

ex 1)

*javac = java 컴파일 λͺ…λ Ήμ–΄

E: -> e둜 듀어감

E:\data>javac -d        -> λ§Œλ“€μ–΄λ‘” μ†ŒμŠ€νŒŒμΌμ„ 컴퓨터가 이해할 수 μžˆλŠ” μ–Έμ–΄λ‘œ μ»΄νŒŒμΌν•΄μ€Œ 
 => Javac -> μ»΄νŒŒμΌν•˜λΌ! λŠ” λͺ…λ Ή 
 => -d  -> νŒ¨ν‚€μ§€ κΈ°μ€€μœΌλ‘œ μ»΄νŒŒμΌν•˜λΌ

  
E:\data>javac -d . Sample.java    => Sample.java νŒŒμΌμ„! (μ»΄νŒŒμΌν•˜λΌ)

E:\data>dir             -> directoryμ•ˆμ— μžˆλŠ” 파일 보기

E:\data 디렉터리

E:\data>java Sample

Hello World!

ex 2)

E:\data>javac -d . Sample.java

E:\data>javac -d ./bin  Sample.java  -> binμ΄λΌλŠ” 폴더에 λ”°λ‘œ κ΄€λ¦¬ν•˜λ €κ³  넣은 것

E:\data>cd bin   -> cd:  ν˜„μž¬ 디렉터리 이름을 λ³΄μ—¬μ£Όκ±°λ‚˜ λ°”κΏ”μ€Œ

E:\data\bin>java Sample  -> main methodλ₯Ό 가지고 μžˆλŠ” class name을 써쀌

​                                           => 그런데!! ν•΄λ‹Ή classμ•ˆμ— main ν•¨μˆ˜κ°€ μ—†μœΌλ©΄ 였λ₯˜κ°€ 남!



(였λ₯˜ λ‚˜λ©΄ μ΄λ ‡κ²Œ 뜸)

E:\data\bin>java Sample

였λ₯˜: Sample ν΄λž˜μŠ€μ—μ„œ κΈ°λ³Έ λ©”μ†Œλ“œλ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. λ‹€μŒ ν˜•μ‹μœΌλ‘œ κΈ°λ³Έ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•˜μ‹­μ‹œμ˜€.

  public static void main(String[] args)

λ˜λŠ” JavaFX μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν΄λž˜μŠ€λŠ” javafx.application.Application을(λ₯Ό) ν™•μž₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

=>κ·Έλž˜μ„œ! Java App을 μ‹€ν–‰ν•˜λ €λ©΄ Main Methodκ°€ μžˆμ–΄μ•Ό ν•œλ‹€!!!!!

* . : ν˜„μž¬ 디렉토리

* .. : 이전 디렉토리

인코딩 νƒ€μž… κ²°μ •ν•˜κΈ°

UTF-8 -> μ „μ„Έκ³„μ˜ μ–Έμ–΄λ₯Ό λͺ¨λ‘ 포괄할 수 μžˆλŠ” 인코딩 νƒ€μž…

: Eclipseμ°½μ—μ„œ window - preference-general-appearance-workspace

Perspective λ°”κΎΈκΈ°

Eclipse μ°½ 였λ₯Έμͺ½μ— 마우슀 올리면

JAVA EE라고 뜸 (Enterprise Edition) -> μ„œλ²„λ‹¨μž„ (too much for us)

-> κ·Έ μ˜†μ— open perspective μ—μ„œ Java둜 λ°”κΏ€ 수 있음

Project λ§Œλ“€κΈ°

EclipseλŠ” ν”„λ‘œμ νŠΈλ₯Ό λ¨Όμ € 생성 해야함

File - new - java project

Java μ†ŒμŠ€μ½”λ“œμ™€ 클래슀 μ½”λ“œλŠ” λ”°λ‘œ 관리함

그런데! EclipseλŠ” μžλ™μœΌλ‘œ μ»΄νŒŒμΌμ„ ν•΄μ„œ bin에 μ €μž₯ν•΄μ€Œ

  • Src 에 μ†ŒμŠ€κ°€ μ €μž₯됨

  • Bin 에 컴파일 된 μ†ŒμŠ€κ°€ μ €μž₯됨 -> byte 파일이 μ €μž₯됨

Project, Package, Class의 μœ„μΉ˜μ΄λ™ λ˜λŠ” 이름 λ³€κ²½ ν•  λ•Œ

: 마우슀 였λ₯Έμͺ½ -> refactor -> move or rename

μ†ŒμŠ€μ½”λ“œ ν™•μΈν•˜κΈ°

  1. JRE System Library - rt.jar - Java.util - Date.class λ“€μ–΄κ°€κ±°λ‚˜

  2. Eclipse μ°½μ—μ„œ class (ex. Date class)μœ„μ— 마우슀 놓고 Ctrl + 클릭 - attach sourceν•˜λ©΄ μ†ŒμŠ€μ½”λ“œ λ³Ό 수 있음

Class

  • System Class

  • Date Class

  • String Class

Last updated

Was this helpful?