볞묞 바로가Ʞ

KG아읎티뱅크

자바프로귞랚 - 자바의 Ʞ쎈지식

반응형

자바프로귞랚 - 자바의 Ʞ쎈지식

​

안녕하섞요. 소소행입니닀.

자바란?

자바(Java)는 C얞얎에 객첎 지향적 Ʞ능을 추가하여 만든 C++곌 달늬, 처음부터 객첎 지향 얞얎로 개발된 프로귞래밍 얞얎입니닀. 자바는 가상뚞신(JVM, Hava Virtual Machine)을 사용하여 욎영첎제와는 독늜적윌로 동작할 수 있습니닀.

​

따띌서, 자바는 얎느 욎영첎제에서나 같은 형태로 싀행될 수 있습니닀. 바로 읎러한 점읎 수많은 개발자로 하여ꞈ 자바륌 사용하게 하는 원동력읎 되고 있습니닀. 현재 자바는 전 섞계에서 가장 많읎 사용하는 프로귞래밍 ì–žì–Ž 쀑 하나입니닀.

자바의 역사

처음에 자바는 가전제품 낎에서 동작하는 임베디드 프로귞랚을 위한 얞얎로 썬 마읎크로시슀템슈(Sun Microsystems)사의 제임슀 고슬링(James Gosling) 팀에 의핎 개발되었습니닀.

​

1991년에 였크(Oak)띌는 읎늄윌로 시작하여 1996년에 발표된 1.0.2버전부터 자바(Java)띌는 읎늄을 사용하게 됩니닀. 1998년에 발표된 J2SE 1.2에서는 웹에서도 자바륌 돌멮 수 있게 핎죌는 자바 애플늿(Java Applet)읎 추가되며, 자바의 읞Ʞ는 ꞉상승하게 됩니닀.

​

ê·ž 후 버전읎 업데읎튞 될 때마닀 닀양한 Ʞ능읎 지원되며 자바는 ꟞쀀한 읞Ʞ륌 누늬게 됩니닀. 읎후 2009년에 썬 마읎크로시슀템슈사가 였띌큎곌 읞수 합병됚에 따띌 자바 또한 였띌큎로 소유권읎 넘얎갑니닀.

자바의 특징

자바 ì–žì–Žê°€ 가지는 장점

​

  1. 자바는 욎영첎제와는 독늜적윌로 싀행할 수 있습니닀.
  2. 자바는 불필요한 Ʞ능을 곌감히 제거하여 닀륞 얞얎에 비핎 ë°°ìš°êž°ê°€ 쉜습니닀.
  3. 자바는 자동 메몚늬 ꎀ늬 등을 지원하여 닀륞 얞얎에 비핎 안정성읎 높습니닀.
  4. 자바는 연산자 였버로딩을 ꞈ지하고 제넀늭을 도입핚윌로썚 윔드의 가독성을 높였습니닀.
  5. 자바에 ꎀ한 수많은 ì°žê³  자료륌 찟을 수 있습니닀.

​

자바 ì–žì–Žê°€ 가지는 닚점

​

  1. 자바는 싀행을 위핎 자바 가상 뚞신을 거쳐알하므로 닀륞 얞얎에 비핎 싀행 속도가 느늜니닀.
  2. 자바는 예왞 처늬가 잘 되얎있지만 개발자가 음음읎 처늬륌 지정핎쀘알 한닀는 불펞핚읎 있습니닀.
  3. 자바는 닀륞 얞얎에 비핎 작성핎알하는 윔드의 Ꞟ읎가 ꞎ 펞입니닀.

자바프로귞랚의 싀행곌정

자바 컎파음러(Java Compiler)

자바 컎파음러는 자바륌 가지고 작성한 자바 소슀윔드륌 자바 가상 뚞신읎 읎핎할 수 있는 자바 바읎튞윔드로 변환합니닀. 자바 컎파음러는 자바륌 섀치하멎 javac.exe띌는 싀행 파음 형태로 섀치됩니닀.

자바 바읎튞윔드(Java bytecode)

자바 바읎튞윔드(Java bytecode)란 자바 가상 뚞신읎 읎핎할 수 있는 얞얎로 변환된 자바 소슀윔드륌 의믞합니닀. 자바 컎파음러에 의핎 변환되는 윔드의 명령얎 크Ʞ가 1바읎튞띌서 자바 바읎튞윔드띌고 불늬고 있습니닀.

​

읎러한 자바 바읎튞윔드의 확장자는 .class입니닀.

​

자바 바읎튞윔드는 자바 가상 ëšžì‹ ë§Œ 섀치되얎 있윌멎 ì–Žë–€ 욎영첎제에서띌도 싀행될 수 있습니닀.

자바 가상 ëšžì‹ (JVM)

자바 가상 ëšžì‹ (JVM, Java Virtual Machine)읎란 자바 바읎튞윔드륌 싀행시킀Ʞ 위한 가상의 Ʞ계띌고 할 수 있습니닀. 자바로 작성된 몚든 프로귞랚은 자바 가상 뚞신에서만 싀행될 수 있윌므로 자바 프로귞랚을 싀행하Ʞ 위핎서는 반드시 자바 가상 뚞신읎 섀치되얎 있얎알 합니닀.

​

따띌서 였띌큎은 대부분의 죌요 욎영첎제뿐만 아니띌 웹 람띌우저, 슀마튞폰, 가전ꞰꞰ 등에서도 자바 가상 뚞신을 손쉜게 섀치할 수 있도록 지원하고 있습니닀.

​

귞래서 개발자는 한 번만 프로귞랚을 작성하멎, 몚든 욎영첎제에서 같읎 사용할 수 있는 장점읎 있습니닀. 당, 자바프로귞랚곌는 달늬 자바 가상 뚞신은 욎영첎제에 종속되므로 각 욎영첎제에 맞는 자바 가상 뚞신을 섀치핎알합니닀.

​

또한, 자바프로귞랚은 음반프로귞랚볎닀 자바 가상 뚞신읎띌는 한 닚계륌 더 거쳐알하므로 상대적윌로 싀행속도가 느늬닀는 닚점을 가지고 있습니닀.

자바 가상 뚞신의 구성

자바 가상 뚞신은 닀음곌 같읎 구성됩니닀.

​

  1. 자바 읞터프늬터(interpreter)
  2. 큎래슀 로더(class loader)
  3. JIT 컎파음러(Just-In-Time compiler)
  4. 가비지 컬렉터(garbage collector)

​

자바 컎파음러에 의핎 변환된 자바 바읎튞윔드륌 읜고 핎석하는 역할을 하는 것읎 ìžë°” 읞터프늬터입니닀.

​

자바는 동적윌로 큎래슀륌 읜얎였므로 프로귞랚읎 싀행 쀑읞 런타임에서알 몚든 윔드가 자바 가상 뚞신곌 연결됩니닀. 읎렇게 동적윌로 큎래슀륌 로딩핎죌는 역할을 하는 것읎 바로 íŽëž˜ìŠ€ 로더입니닀.

​

JIT 컎파음러란 프로귞랚읎 싀행 쀑읞 런타임에 싀제 Ʞ계얎로 변환핎죌는 컎파음러륌 의믞합니닀. 동적 번역(dynamic translation)읎띌고도 불늬는 읎 Ʞ법은 프로귞랚의 싀행 속도륌 향상시킀Ʞ 위핎 개발되었습니닀. 슉, JIT 컎파음러는 자바 컎파음러가 생성한 자바 바읎튞윔드륌 런타임에 바로 Ʞ계얎로 변환하는 데 사용합니닀.

​

자바 가상 뚞신은 ê°€ë¹„ì§€ 컬렉터륌 읎용하여 더는 사용하지않는 메몚늬륌 자동윌로 회수핎쀍니닀. 따띌서 개발자가 따로 메몚늬륌 ꎀ늬하지않아도 되므로 더욱 손쉜게 프로귞래밍을 할 수 있도록 도와쀍니닀.

간닚한 자바프로귞랚

자바프로귞랚은 한 개 읎상의 큎래슀(class)로 구성됩니닀. 읎러한 큎래슀는 한 개 읎상의 필드(field)나 메소드(method)로 구성됩니닀.

​

간닚한 자바프로귞랚의 Ʞ볞 구조는 닀음곌 같습니닀.

 
class 큎래슀 읎늄 {
	필드의 ì„ ì–ž
    필드의 ì„ ì–ž
    ...
    메소드의 ì„ ì–ž
    메소드의 ì„ ì–ž
    ...
}
class Test {
	int field1;
	String field2;
    
    public void method1() {
    	Systme.out.println("자바 프로귞래밍!!");
    }
}
싀행결곌
자바 프로귞래밍!!

main() 메소드

자바프로귞랚읎 싀행되멎 ë§š 뚌저 main() 메소드륌 ì°Ÿì•„ ê·ž 안의 몚든 명령묞을 찚례대로 싀행합니닀. 따띌서 하나의 자바프로귞랚에는 main() 메소드륌 가지는 큎래슀가 반드시 하나는 졎재핎알합니닀.

​

자바에서 main() 메소드는 닀음곌 같읎 선얞합니닀.

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

위에서처럌 main() 메소드는 반드시 public static void로 선얞되얎알 합니닀.

명령묞(statement)

자바프로귞랚의 동작을 명시하고, 읎러한 동작을 컎퓚터에 알렀죌는 데 사용되는 묞장을 명령묞읎띌고 합니닀. 자바의 몚든 명령묞은 반드시 섞믞윜론(;)윌로 끝나알 합니닀.

죌석(comment)

죌석읎란 윔드에 대한 읎핎륌 돕는 섀명을 적거나 디버깅을 위핎 작성하는 음종의 메몚입니닀. 자바 컎파음러는 죌석은 묎시하고 컎파음하므로 싀제 싀행결곌에는 아묎런 영향을 죌지않습니닀.

​

자바에서 죌석을 작성하는 묞법은 닀음곌 같읎 두가지 방법읎 있윌며, ê·ž 찚읎는 전혀 없습니닀.

​

자바의 한 쀄 죌석은 시작위치에 //을 사용하고 여러 쀄 죌석은 /*로 시작핎서 반드시 */로 끝나알합니닀.

1. //한 쀄 죌석
2. /*여러
     쀄
     죌석 */

닀음 예제는 자바에서 여러 쀄 죌석 안에 또 닀륞 한 쀄 죌석을 쀑첩핎서 삜입하는 예제입니닀.

/* 여러 쀄
	//읎렇게 두 죌 죌석 안에 또 닀륞 한 쀄 죌석을 삜입할 수 있습니닀.
죌석입니닀. */

위의 예제처럌 자바에서는 여러 쀄 죌석 안에 또 닀륞 한 쀄 죌석을 삜입할 수 있습니닀. 하지만 닀음 예제처럌 여러 쀄 죌석안에 또 닀륞 여러 쀄 죌석을 쀑첩핎서 삜입할 수는 없습니닀.

[1] /* 여러 쀄
[2]		/* 또 닀륞 여러 쀄 죌석입니닀. */
[3] 죌석입니닀. */

위의 예제처럌 여러 쀄 죌석 안에 또 닀륞 여러 쀄 죌석을 삜입하멎 [2]번 띌읞에서 삜입한 죌석의 종료 Ʞ혞(*/)륌 [1]번 띌읞에서 시작한 첫 번짞 죌석읎 자신의 종료 Ʞ혞(*/)로 잘못 읞식하게 됩니닀.

​

따띌서 위 예제의 [3]번 띌읞은 죌석윌로 읞식되지 못하고, 컎파음 시 였류가 발생하게 되므로 자바에서 여러 쀄 죌석은 절대로 쀑첩핎서 사용핎서는 안됩니닀.


였늘 포슀팅에서는 자바프로귞랚의 Ʞ쎈지식에 대한 낎용을 닀뀘습니닀. 자바프로귞랚의 System.out.println()은 닀음 포슀팅에서 자섞히 닀뀄볎도록 하고, JAVA8의 변겜사항 또한 닀뀄볎겠습니닀.

​

자바프로귞랚을 사용하여 전공대비, ì·šì—…, 진학 등의 목적곌 더불얎 닀양한 프로귞래밍 얞얎로 전공대비, ì·šì—…, 자격슝 췚득, 진학 등의 목적을 가지고 계신 분읎띌멎 아래의 넀읎버 폌을 통핎 간닚하게띌도 낚겚죌시멎 제가 직접 빠륎고 정확한 답변을 핎드늬겠습니닀.

​

감사합니닀 :)

​

â–Œ 자바프로귞랚에 대한 궁ꞈ한 점 낚ꞰꞰ â–Œ

http://it-kgedu1.kr/support/edu_consult.php

 

IT학원 - KG아읎티뱅크 홈페읎지

IT학원 KG아읎티뱅크 (종로, 강낚, 녞량진, 부산) 통합 홈페읎지, 학원비 및 수강료 조회. 방묞상닎예앜, 교육곌정, 상닎안낎

it-kgedu1.kr

 

반응형