자바를 공부해 보자

JAVA 프로그래밍 소개

자바

1. java 프로그래밍 소개

 

 

1) programming?

프로그래밍 언어 -> 결국 커뮤니케이션용 언어일뿐

 

* 실제 세계의 언어마다 특징이 있듯이 프로그래밍 언어들도 그 특징이 있음

 

* 사람과 사람 사이에 통역사가 있듯 컴퓨터와 사람 사이에도 통역사가 필요함

 

- 자바에서는 jdk라는 통역

 

 

2) 프로그래밍 언어의 발전 방향

[1] Low level 언어

*기계어 중심의 프로그래밍 ( 0 과 1로 이루어진 언어)

* cpu 인스트럭션

* 어셈블리어

 

[2] High level 언어

* 사람이 이해하기 쉬운 언어

* 3세대 : fortran , cobol , c

* 4세대 : delphi, powerbuilder

* web : 닷넷/java 등 현재 사용되는 언어들

 

3) Low level의 언어의 장/단점

장점                                        

*세밀한 처리가 가능                  

*최적화된 프로그래밍 구현 가능   

 

단점

 * 진입장벽이 높음

 *프로그램 구현을 위해서 많은 시간

 

4) High level 언어의 장/단점

장점                                        

*인간이 이해하는 언어의               

형태로 작성                                

* 빠른개발

* 쉬운 유지보수

 

단점

 *완벽한 성능을

기대하기 어려움

 

*개발자의 지식 수준이 상대적으로 낮음

 

5) High level 언어와 컴파일러의 등장

 

High level -> CPU 인스트럭션으로 직접 변환은 불가

 

^컴파일러를 통해 운영 체제 (WINDOW , LINUX) 직접적으로 통신하는 컴퓨터가 알아들을 수 있게 하는 것

 

* 중간에 CPU의 언어로 해석할 수 있는 간접적인 장치가 컴파일러

* 보통의 경우 컴파일러를 통해서 운영체제와 통신하는 코드를 생성

 

 

6) Interpreter 방식의 언어

컴파일을 통해서 운영체제와 통신하는 방식의 대안

 

* 특정한 프로그램이 실행되면서 프로그램에 필요한 로직이나 데이터를 해석

* 해석기의 존재만 있다면 운영체제에 영향을 덜 받을 수 있다는 장점

 

 

^ 컴파일,인터프리터 방식 2가지 둘다 공부 할 것임

 

 

7) 자바 언어의 역사

[1]

- 1991년 썬사의 James Gosling에 의해 가전제품에 이용하기 위해 개발이 시작

(Greem Project-컴퓨터기술을 통합한 통합 리모콘)

 

- 당시 WWW은 별로 알려지지 않았음

 

^운영체제에 독립적이게 만든 것임. 예를 들면 안드로이드용, IOS용 만들어야되서 불편함

 

[2]

- 초기에 개발된 언어를 Oak라 하였으며 전자기기의 내장된 프로그램을 위해 사용

- Oak는 별로 관심을 끌지 못하였음

 

 

[3]

 

- 1994년 급격히 성장한 WWW에 자바를 적용 결정

- 처음 등장한 거이 웹러너였으며 뜨거운 자바

즉 핫자바로 이름을 바꾸었음

 

 

[4]

 

- 처음으로 공식 회의에서 웹 문서 안에서 실행되는 3D 분자 구조모형을 선보였음

- 운영체제에 구해 받지 않는 프로그램을 작성할 수 있었음

 

- Gosling은 웹브라우저 안에서 실행되는 자바 프로그램을 작은 프로그램이라는 뜻에서 Applet이라 하였음

 

[5]

 

- 1995년 5월 23일 넷스케이프 사의 브라우저가 자바 기술을 채택하게 되었음

 

[6]

 

- 플랫폼

: Sun SPARC Solaris , Windows NT , Window95, Linux

 

 

[7]

 

- Java beta 1 발표 (Sun Microsystems)

 

[8]

- Netscape 지원결정

 

 

[9]

- Java beta2 발표

 

[10]

- JavaScript 발표( Sun & Netscape)

 

[11]

- 1996년 자바1.0 발표 Netscape 2.0 자바 지원

 

[12]

- 2005년 자바 5.0 사용

 

 

[13]

- 2009년 자바 6.0 사용

 

[14]

- 2010년 Oracle 인수

 

[15]

- 2011년 자바 7.0 사용

 

 

[16]

- 2014년 자바 8.0 사용

 

 

 

 

 

8)자바 언어의 특징

 

[1] 단순 (simple)

* 자바는 C++ 언어를 기반으로 탄생하였지만, C나 C++에서 프로그래머에게 많은 혼란을 주는 요소들을 제거

 

예시 ) 포인터, 구조체

 

 

[2] 객체지향(Object - Oriented)

* 객체지향 프로그램을 작성하는데에 자바만한 언어가 없다는 것도 큰 장점

 

* 자바는 객체지향 개념을 쉽게 구현할 수 있도록 클레스와 상속을 지원하면서 C++와 달리

모든 프로그램이 클레스 안에서 구현되도록 규정되어 있으므로 진정한 객체지향 언어

 

 

[3] 동적인 성능 확장 제공

* 자바가 세상에 결정적인 인상을 준 것은 미리 설치 되지 않은 프로그램이 서버로부터 동적으로 다운로드 되어

웹브라우저에서 실행 할 수 있다는 것임

 

 

 

[4] 멀티쓰레드의 지원

* 자바에서는 쓰레드라는 기능을 언어 차원에서 제공함

* 쓰레드란 프로그램안에서 독립적으로 실행되는 작은 실행단위라고 할 수 있음

* 메모리의 공유가 가능하면서 프로그램이 보다 효율적으로 실행 될 수 있도록 해줌

* 수행시간도 빠를 뿐더러, 요청에 응답하는 시간도 빨라짐을 알 수있음

 

^ 작은 단위로 동시에 사용 가능

 

 

 

[5] 자동 메모리 관리

* 자바에서는 개발자가 메모리를 관리해 주지 않아도 됨

- 왜냐하면, 자바가상머신이 자동으로 해제해 주기 때문

 

 

* 따라서 개발자는 자기가 사용하고 싶을 때로 사용하다가 그냥 두어도 자바가상머신이 자동으로 해체를 해줌

(가비지컬렉션)

 

 

* 자바가상머신 ( Java VIirtual Machine -- JVM)이란?

인터프리터와 같은 자바 프로그램의 실행환경을 가상적인 운영체제라는 뜻에서 자바가상머신이라 함

 

 

 

 

 

9) 자바 언어의 특징 ( 인터프리터)

{인터프리터(Interpreted)에 의해 실행

* 자바는 독특한 실행 방식을 취하고 있음

* 자바 소스는 자바 가상 머신에서 실행될 수 있는 바이트 코드로 번역되며, 번역된 바이트 코드는 바이트 코드 해석기가 있는 어떠한 기종의 컴퓨터 환경에서도 실행 될 수 있음

 

 

 

tip : 자바는 compiled interpreted language

 

 

 

 

 

 

 

 

자바는 네트웍을 통하여 자바가상머신이 설치된 어떤 컴퓨터에서도 실행 가능

 

 

해석기 : JRE

 

 

^나는 프로그램 하나만 만들면 각각 운영체제에 만든 해석기를 처리해서 해석을 해준다. ( 딱 1번만 만들어서 실행한다)

 

 

 

10) 자바 언어의 특징( 독립성)

 

플랫폼의 독립성

 

* 자바는 자바가상머신에서 실행되는 바이트코드를 사용함으로써 특정 컴퓨터에 종속되지 않음

 

* 자바는 한 번 작성되면 JVM이 설치된

모든 종류의 컴퓨터에서 실행할 수 있음

 

* 자바는 언어의 문법 뿐만 아니라 시스템 종속적인 부분까지도 (int는 항상 32비트 등)

시스템 구조 중립적으로 설계되었음

 

 

 

플랫폼의 독립성이란?

-> 자바에 대한 특징을 언급할 때 항상 플랫폼의 독립성이란 말이 나오는데,

플랫폼이란 우리나라 말로 하면 "운영체제"를 말하고 독립적이란 "상관없다"라고 맗마

 

즉, 운영체제에 상관없이 실행됨

 

 

 

 

 

 

컴파일하면 exe 파일이 생김

window면 window exe 가 따로 만들어 주어야 함

 

프로그램들을 따로 따로 번역을 해주어야 함

종속이 되어 처리를 해주더라.

 

 

 

 

 

but, 자바.class

어느 운영체제에 상관없이 JVM이 찾아서 실행시켜 줌

 

 

 

 

 

 

운영체제에 대해서 매우 독립적이다.

 

 

11) 자바의 장점

[1] 빨리 배울 수 있음

[2] 적은 코드로 프로그램을 작성 할 수 있음

[3] 좋은 품질의 프로그램을 작성할 수 있음

[4] 프로그램 개발을 빨리 할 수 있음

[5] 플랫폼에 독립적인 프로그램을 작성할 수 있음

[6] 분산 소프트웨어를 쉽게 작성 할 수 있음

 

 

 

 

 

 

'자바' 카테고리의 다른 글

제어문  (0) 2018.09.10
자바 연산자  (1) 2018.09.09
자바 기본 입출력  (0) 2018.09.08
자료형, 변수 및 상수 소개  (0) 2018.09.08
2. Java 개발 환경 구축  (0) 2018.09.08