본문 바로가기
매일코딩/자바

[자바기초] 1.java언어의 탄생 배경과 특징

by 인생여희 2017. 1. 2.
반응형

자바는 누가 만들었나?

자바는 월드 와이드 웹이 개발되기 시작하였던 1991년 썬 마이크로시스템즈에서 제임스 고슬링에 의해 탄생되었다.

 

자바의 특징

- 자바 애플릿은 HTML에서 사용자와 서버 사이의 다이나믹 환경을 제공하는 작은 프로그램으로 애니메이션이나, 간단한 게임 그리고 사용자가 서버에 별도의 요청을 하지 않고서도 수행할 수 있는 단순한 작업들을 수행할 수 있어 빠르게 확산, 대중화를 이루게 된다.

- 자바 컴파일러는 바이트 코드라는 중립적인 구조의 실행코드를 만들어 낸다.

- 바이트 코드는 각 플랫폼에 있는 인터프리터를 통해 실제로 실행된다.

 

 

시대별 특징


1991

자바는 월드 와이드 웹이 개발되기 시작하였던 1991년 썬 마이크로시스템즈에서 제임스 고슬링에 의해 탄생되었다

(단순하고 버그가 없는 가전 전자 제품을 만드는 것을 목표로 함)

 

1993

고슬링은 자바애플릿을 구현한 최초의 웹브라우저인 핫 자바를 개발함.

자바애플릿은 HTML에서 사용자와 서버 사이의 다이나믹 환경을 제공하는 작은 프로그램

사용자가 서버에 별도의 요청을 하지 않고도 단순 작업 수행가능

빠르게 확산, 대중화를 이룬다.

 

1997

JDK 1.1발표

 

2013

JDK 버전 까지 발표

 

자바의 플랫폼은 소프트웨어로 구성

 

자바의 영역

JAVA EE

자바의 서버측 기술

비즈니스 로직을 수행하는 컴포넌트 개발

 

JAVA ME

PDA, 핸드폰, 스마트폰등 모바일 환경 구축

 

JAVA SE

자바의 개발의 기본적인 에디션

채팅, 메신저, 게임, 메모장 등 데스크톱 애플리케이션을 개발 할 때 사용

 


자바와 다른 언어의 차이점?

 

코드의 단순성( C++에서 잘사용 되지않거나 모호하고 좋지 않은 기능을 제외하고 단순화 )

 

C/C++ 과 다른점은

구조체와 공용체 포인터를 지원하지 않음

typedef#define을 지원하지 않음

연산자 다중 정의를 지원하지 않음

클래스 다중 상속을 지원하지 않음

문자 배열로서 String 이라는 클래스 지원함

쓰레기 수집 기능을 제공함으로써 메모리 할당과 해제가 되어 함수를 사용할 필요가 없음

 

객체 지향언어

C++에서와 같은 전역 변수와 독립 함수가 존재하지 않음

자바에서는 오직 객체만이 존재함

 

객체 = 속성 + 행위

= 변수 + 메소드

 

플랫폼 독립

 

네트워크 환경과 다양한 하드웨어에서 작동할 수 있음

자바 가상 머신이 있으면 자바 코드의 변경 없이 실행할 수 있음

자바 컴파일러는 바이트 코드라는 중립적인 구조의 실행 코드를 만들어 냄

바이트 코드는 각 플랫폼에 있는 인터프리터를 통해 실제로 실행됨

 

) JAVA CODE(.java) => JAVA 컴파일러가 => Byte Code(.class)로 변경 ,

JVM이 설치된 윈도우, 리눅스, 맥에서 .class를 읽을 수 있다.

 

신뢰와 안정성

컴파일시 엄격한 데이터형 검사를 진행하므로 비정상적인 상황을 예방한다.

힙이나 스택등의 메모리에 접근할 수 없어서 바이러스로부터 안전하다.

공용키 암호화 방법으로 사용자를 식별해서 해커로부터 정보를 보호한다.

 

높은 성능

 

쓰레기 수집기능으로 사용하지 않거나 메모리가 해제되면 자동적으로 메모리를 수거 한다.

(메모리가 할당된 객체의 상태를 끝까지 추적)

 

6. 멀티쓰레드 기능

하나의 프로그램 안에서 여러작업을 동시에 처리 할 수 있다.

 

 

 

2. 자바의 환경 설정과 실행

 

-jdk 설치 (자바 개발을 위한 환경)

www.oracle.com 에서 다운 가능

java sejdk를 선택하면 jre도 함께 설치 가능하다.

jre에는 자바 실행환경인 jvm과 클래스 라이브러리들이 포함되어 있다.

jdk는 자바 개발도구인 jre와 개발이 필요한 실행 파일을 포함한다.


설치과정은 이 곳을 참고. 

http://nukestorm.tistory.com/18 

 



 

jdk의 특징

GUI 형태의 개발환경을 제공하고 있지 않음

메모장 같은 에디터에서 자바프로그램 소스 작성

 

이클립스를 많이 사용함

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/2/eclipse-jee-mars-2-win32.zip 다운로드 가능

 

 

#순서 중요

JDK 프로그램을 설치하고 나면 bin 디렉터리에는 실행파일과 DLL 파일이 들어 있다.

javac 자바 컴파일러 , 자바코드를 바이트 코드로 컴파일 해줌

java 자바 인터프리터, javac로 컴파일 된 바이트 코드를 실행

jdb 자바 프로그램을 디버깅할 수 있는 command 라인 디버거

javah 자바 클래스로부터 c 헤더 파일과 c stub 파일을 만들어 주는 도구

이를 통해 자바 코드와 c코드를 연결할 수 있음

javap 컴파일된 자바 파일을 dissasemble 해주는 도구 , 바이트 코드를 프린트 해줌

javadoc 자바 소스 코드로부터 html 형태의 api 문서 만듦

 


 자바의 생긴 모습


* 설명

void 아무것도 출력하지 않음

public 키워드 누구든 이 메소드를 호출할 수 있도록 공개

static 키워드 이 클래스에는 오직 하나의 main 메소드 공유

class 는 맴버변수와 메소드의 결합이다.

하나의 소스파일에 클래스를 여러개 선언한 경우

public 이 붙은 클래스를 하나만 선언 할 수 있음

이 클래스의 이름은 소스파일명과 동일해야 함

 

 

 

코드의 실행 단계

 

1.자바 코드를 text 문서 편집기를 이용해서 코드 작성


2. 파일 이름을 클래스명.java”로 저장함

(만일 클래스 이름이 classAA{} 라면 AA.java로 저장)

저장시 대소문자는 반드시 구별해서 저장

확장자는 반드시 “.java”

 

3.컴파일 과정을 거친다

 

컴파일 작업: javac 파일명 .javajavac AA로 컴파일함

컴파일 작업 후 : 파일명.class 라는 파일 생성되며 AA.java를 컴파일 하면 AA.class 가 생성됨

 

4. 실행

java 파일 명으로 함

java AA로 실행하면 됨

 

 

 

jvm은 실제로 존재하는 것이 아닌 개념적인 컴퓨터이다.

소프트웨어로 하드웨어를 에뮬레이션 하는 가상컴퓨터이다.

 

jvm 메모리


메소드 영역

클래스의 메소드에 대한 바이트 코드

전역변수(클래스 변수)

 

힙영역

객체를 저장할 때 사용하는 메모리

new 연산자를 이용하여 동적 할당해서 생성하는 영역

 

스택영역

지역변수, 메소드의 인자, 메소드의 리턴값, 리턴번지 등을 사용

 

레지스터 영역

가상 머신의 현재 상태를 보여주며 현재 실행되고 있는 메소드의 실행 포인터 저장

 

실행풀

숫자 리터럴과 상수 필드 포함

메소드 영역으로부터 할당 받음

반응형

'매일코딩 > 자바' 카테고리의 다른 글

[자바기초] 2.식별자와 상수  (4) 2017.01.03

댓글