언어의 변천.

컴퓨터가 이해하기는 쉬워도 사람이 이해하기는 어려운 저급언어 (low-level language).

                                                          

사람이 사용하는 일상언어에 좀 더 가까워져 프로그램의 작성이 용이해진 고급(high)언어

                                                          

프로그램을 모듈(실행단위)로 나누고, 상위 모듈에서 하위 모듈을 호출하는 방식으로 프로그램을 구성, 프로그램 구조를 이해하기 쉽게 만드는 기법
= 구조적(structured) 프로그래밍

                                                          

사물들이 서로 접촉하고 반응하면서도 독립성을 유지해 혼란을 일으키지 않는 것처럼 프로그램을 하자는 것이 바로 객체지향 프로그램(Object-Oriented Programming)

 

 

객체

현실세계의 물체(Object)를 모방한 프로그램상의 Object. 현실세계의 객체는 특성과 행동을 가지고 외부세계와 상호작용한다. 프로그램의 객체는 데이터와, 기능(메소드)를 통해 외부세계와 상호작용 하도록 만든다. 객체는 실행되고 있는 프로그램 안에서만 존재할 수 있다. 객체를 만들기 위해선 클래스가 필요하다.


객체 생성:

StringBuffer obj=new StringBuffer(Hello,java);

StringBuffer타입의 변수 obj String데이터 값을 주고 객체 생성.

 

클래스.

같은 종류의 객체끼리는 데이터구조와 기능이 서로 같다. 이런 공통점을 따로 뽑아서 정의하는데 그 정의를 객체들의 클래스(class) 라고 부른다.

클래스는 그 클래스에 속하는 객체들의 공통된 데이터 구조와 기능을 대표한다.

객체지향 프로그래밍에서는 클래스의 코드를 작성해 놓고 그것을 틀로 삼아서 객체를 찍어내는 방법을 사용한다. 그리고 나서 객체마다 고유한 데이터 값을 부여하면 별게의 객체를 만든 것과 같은 셈이다. 그런 이유로 클래스를 ‘객체를 찍어내는 틀’이라 한다. 객체를 생성하는 도구인 동시에 객체의 종류를 나타내는 데이터 타입이다.


클래스 선언
- 데이터를 필드로, 기능을 메소드로 표현.

- 가장 먼저 해야할 일은 클래스, 필드, 메소드의 이름을 정한다.

- 그 후 필드의 타입과 파라미터 변수 타입, 리턴타입을 정한다.

- 메소드에 들어갈 구체적인 로직을 구상한 후, class Ex{}와 같이 선언한다.

 

:: 컴파일한 결과물이 둘 이상이면 JVM이 프로그램을 시작하면서 그 프로그램에서 사용하는 클래스 파일들을 알아서 읽어들인다. ::

 

생성자

객체를 생성할 때 필드 값을 넘겨줄 수 있다. 객체가 생성되고 나서 해야 할 일을 클래스 안에 서두고, 모든 객체들이 그 로직을 이용해서 초기화 작업을 할 수 있도록 만들어둔 것.

생성자에 쓰여진 파라미터는 생성자가 호출되면 생성자의 파라미터 변수를 통해 전달.

그렇기 때문에 객체의 생성식에 쓰는 파라미터의 타입, , 순서는 생성자 파라미터 변수의 타입, , 순수와 서로 맞아야 한다.

생성자의 이름은 반드시 클래스와 같아야 하고, 리턴타인이 없어야 한다.

클래스 내의 생성자들은 파라미터 변수의 수, 타입, 순서로 구분된다.
(
파라미터 변수이름 X)

 

디폴트 생성자

자바 컴파일러는 선언된 생성자가 하나도 없는 클래스를 컴파일할 때는 자동으로
no-arg constructor
를 만들어서 추가한다. 이렇게 자동으로 추가되는 생성자를 디폴트 생성자 라고 한다.
디폴트 생성자는 아무런 명령문도 포함하지 않기 때문에 실제로 하는 일은 없다.

클래스 내에 선언된 생성자가 하나라도 있으면 디폴트 생성자를 자동으로 추가하지 않는다.

 

생성자에서 생성자 호출하기.

This(pam1,pam2);

생성자 안에 쓰는 생성자 호출문은 반드시 그 생성자의 첫 번째 명령문 이어야함.

 

필드

객체의 데이터를 표현한다. 필드는 같은 클래스 내에서라면 순서에 상관없이 생성자나 메소드 안에서 자유롭게 사용.

private – 클래스 외부에서 필드를 사용하지 못하도록 막음으로써 정보은닉을 구현한다.

 

final

선언문이나 생성자 안에서 반드시 초기값 지정해야 한다. final필드를 선언문이나 생성자에서 초기화 하지 않으면 그 클래스는 컴파일되지 않는다.

 

메소드

클래스에 정의된 기능은 자바클래스의 메소드로 선언해야 한다.


메소드 구현 - 메소드에 들어갈 로직을 구상하고 그 로직을 실행하는 데 필요한 데이터가 무엇인지 와 로직의 실행 결과를 어떤 타입의 데이터로 산출해야 하는지에 대한 파악이 선행되야 한다.

메소드의 로직은 메소드의 본체 안에 기술해야 하고, 메소드가 필요로 하는 데이터는 파라미터 변수로 선언, 로직의 실행결과는 return문으로 리턴해야한다.

클래스 내부에서의 메소드 호출 시 메소드 이름 앞에 어떤 객체인지 표시할 필요가 없다.

 

:: 한 메소드에 파라미터 변수가 여럿일 경우에는 데이터 타입과 이름이 반드시 쌍을 이루도록 해야한다. 파라미터 변수의 선언문에는 초기값을 대입할 수 없다. 파라미터 변수의 선언에도 final 키워드를 사용할 수 있다. 그런 파라미터 변수는 메소드 안에서 값을 바꿀수 없다. ::

 

예외처리 – 익셉션을 밖으로 던지는 메소드.

자바에선 메소드 안에서 처리하지 못한 모든 익셉션을 메소드 밖으로 던져진다.

메소드 밖으로 던져진 익셉션은 메소드 호출문을 try문으로 묶어서 처리할 수 있다.

 

예외처리 – 인위적으로 익셉션을 발생시키는 방법.

인위적으로 익셉션을 발생하는 throw문을 쓴다.

throw new Exception(“에러 발생”);

(Exception 클래스에는 String 타입의 파라미터를 받는 생성자도 있기 때문에 가능하다.)

메소드가 익셉션을 발생하도록 수정했으면, 그 메소드를 호출하는 프로그램에서도 그에 맞추어 try문을 추가해야 한다.

 

메소드 오버로딩

한 클래스 내에 똑 같은 이름의 메소드를 여러 개 선언

메소드 이름은 같지만 파라미터 변수의 수, 타입, 순서가 다르기 때문에 구분가능.


메소드 시그니쳐(signature, 서명
) : 메소드 이름, 파라미터 변수의 수, 타입, 순서를 묶음

 

정적 필드

클래스 자체에 속하는 데이터를 저장할 변수. 필드의 선언문 앞에 static이라는 키워드를 붙여서 선언한 필드. 인스턴스 변수는 객체마다 따로 생기지만 정적필드는 특정객체에 상관없이 클래스에 하나만 생긴다. 정적필드는 클래스 자체에 속하기 때문에 앞에 객체이름 대신 클래스 이름을 붙여 사용가능.

  

상수의 선언

상수에 이름을 붙여서 사용하고 싶을 때 final, static키워드를 다 붙인 필드를 사용.

 

정적 메소드

static 키워드를 붙여서 선언한 메소드. 특정 객체에 종속되지 않고 기능을 수행하는 메소드를 사용할 때 선언하는 것이 좋다. 정적 메소드는 특정 객체에 속하지 않기 때문에 인스턴스 필드나, 인스턴스 메소드(정적 메소드가 아닌 메소드)를 사용할 수 없다.

  

정적 초기화 블록

정적 필드의 초기값을 필드 선언문에서 대입할수 없을 때 사용한다

static키워드와 중괄호로 묶은 명령문들로 구성된다.

Static { field..... }

 

상속

클래스를 가져다가 확장해서 새로운 클래스를 만드는 기술을 상속이라 한다.(inheritance)

다른 클래스에게 상속을 해주는 클래스를 슈퍼클래스, 상속을 받는 클래스를 서브클래스라 한다.

::다른 클래스를 상속하는 클래스를 컴파일 하기 위해선 슈퍼클래스의 클래스 파일이 필요.::

 

상속과 생성자

기본적으로 일반 클래스의 경우와 마찬가지다.

슈퍼클래스로부터 상속받은 필드들도 생성자 안에서 초기화 해야한다.

 

생성자가 있는 슈퍼클래스를 상속하는 방법.

자바 컴파일러가 컴파일을 할 때 생성자의 첫 번째 명령문이 슈퍼클래스의 생성자 호출문이 아니면 자동으로 슈퍼클래스의 no-arg constructor호출문을 그 위치에 추가시켜 주는데, 슈퍼클래스에 생성자가 있다면 추가시켜 주지 않는다.

이 문제를 해결하기 위해 서브클래스에서 슈퍼클래스의 생성자를 호출한다.

- Super(param1,param2...);

서브클래스의 생성자 안에서 슈퍼클래스의 생성자를 호출할 때는 슈퍼클래스의 이름대신 super 키워드를 써야한다. 반드시 첫번 째 명령문 이어야 한다.

- This(param1,param2...);

또 클래스의 생성자 안에서 같은 클래스의 생성자를 호출할 때는 this 키워드를 사용한다.

 

메소드 오버라이딩

슈퍼 클래스의 메소드와 똑같은 시그니쳐의 메소드를 선언해서 슈퍼 클래스의 메소드를 무시하도록 만드는 것을 말한다. 같은 시그니쳐를 갖는 메소드에 대해서만 일어난다.

Final 키워드 클래스 선언 시 class 키워드 앞에 final키워드를 쓰면 다른 클래스가 그 클래스를 상속할수 없다. final 키워드는 특정 메소드의 오버라이딩을 금지할 때도 사용된다.

 

인스턴스화

클래스를 가지고 객체를 만드는 일을 말한다. 클래스의 주된 용도는 인스턴스화지만, 클래스의 인스턴스화를 막아야할 경우에는 abstract 키워드를 사용한다.
abstract
키워드를 사용한 클래스를 추상클래스라고 한다. 추상 클래스는 객체를 만들수 없다.

 

추상 메소드

메소드의 리턴 타입 앞에 abstract라는 키워드를 쓰고 메소드 본체가 올 자리에는 세미콜론을 쓰는 것으로 표현한다.

추상메소드를 포함하는 클래스는 클래스 자체도 추상클래스로 선언해야 한다.

추상메소드를 본체가 있는 메소드로 오버라이드 하는 것을 추상메소드를 구현한다고 말한다.

추상메소드를 선언하는 목적은 첫 번째, 서브 클래스에서 이 메소드를 반드시 구현하도록 만들기 위해서이다. 두 번째, 추상메소드를 통해 다형성을 활용하기 위해서 이다. 다형성이란 하나의 변수에 여러 종류의 데이터를 대입할 수 있는 성질을 뜻한다. 클래스는 객체 생성의 도구 뿐만 아니라 객체의 타입으로도 사용되는 것을 이용해 그 클래스로 만든 객체와 서브클래스객체를 대입 해, 여러종류의 객체를 똑 같은 로직으로 처리할 수 있다.

 

:: 다형성을 활용 할 때 주의점 객체의 메소드를 호출할 때 변수의 타입에 상관없이 객체가 속하는 클래스의 메소드를 호출한다. 컴파일러는 객체가 아니라 변수의 타입만 가지고 그메소드가 있는지 없는지 체크한다. 즉 슈퍼클래스의 메소드를 호출하는 척 하면서 컴파일러의 체크를 무사 통과하고, 프로그램이 실행될 때는 서브클래스의 메소드가 호출되도록 하는 것이다.

 

인터페이스

자바에서는 클래스의 상속 관계에 상관없이 인터페이스와 또 다른 관계를 맺을 수 있도록 허용한다. 클래스들의 공통 기능만 표현 할 수 있고, 공통데이터는 표현할 수 없다는 제약이 있다.

인터페이스에 속하는 메소드는 무조건 추상 메소드로 선언해야 한다. 때문에 따로 abstract키워드를 쓰지 않아도 된다. (자바 컴파일러가 자동으로 추가)

인터페이스의 메소드를 구현하는 메소드는 반드시 public 키워드를 붙여야 한다.

객체를 만들수 없기 때문에 생성자도 선언할 필요가 없다.

인터페이스 변수에는 그 인터페이스를 구현하는 클래스의 객체라면 어떤 객체든지 다 대입할 수 있다. (다형성을 가진다.) 상수 필드를 선언할 수 있는데 final static을 쓰지 않아도 컴파일러가 자동으로 추가한다.

extends를 통해 인터페이스 끼리 상속이 가능하고 다중상속도 허용한다.


Servlet : 원래 Java로 만든 프로그램들끼리 통신할 때(관리용)으로 용이하게 하기 위해서 생겨난 것으로 알고 있습니다. 어떤 요청을 보내면 결과를 보내주는 것이지요.

 

MVC 모델 : 작업을 Model, View, Controller 를 구분해서 처리하는 겁니다.

JSP 는 사용자에게 보여지는 화면(View) 처리만 하고

SERVLET 은 중간에서 작업구분(Controller) 역할을 하고

일반 JAVA(CLASS) 파일에서 업무처리 하는 형태입니다.

 

MVC 패턴

M Model 사용자Type모델타입이구요. V View 보여지는 페이지.

C Control DAO(데이타베이스를 액세스하는) 페이지 이렇게 개발을 한다는 거죠

이렇게 소스를 분리하면 유지보수 라든지 그런게 쉽겠죠.

 

MVC (M: Model, V:View, C:Controller)

MVC개념은 무엇인지 말씀 드리면 asp php 를 해보셨다면 아시겠지만 asp, php 에 보면 html 태그와 프로그램 소스가 혼용되어 들어 있습니다. 그러니까 if, for 와 같은 프로그램과 <table> <font> <br>와 같은 출력용 데이터가 공존 하는 것이지요. 그래서 디자이너가 작업을 해서 개발자에게 주면 개발자가 밤을 세고 (물론 디자이너도 고생이지만) 중간에 라인이 빠졌다는 등 해서 싸움이 일어나지요.^^
아무튼 디자이너가 작업을 하고 기능이 추가되지도 않았는데 꼭 개발자 손을 거쳐야 했습니다. 그래서 그 2개를 분해해 버린 것이지요.

 

말 그대도 V 는 보여지는 놈이지요. java기반에서는 jsp 가 이 부분을 담당하지요.

이때 jsp 에서는 어떤 프로그램 코드도 들어있지 않습니다. 약간의 제어를 위한 TLD(개발자가 만든 태그와 같은 태그를 개발자만 만들 수 있습니다)만 있지요. 다시 말해서 디자이너가 직접 jsp 를 수정해서 화면을 재구성할 수 있습니다. 요즘 나오는 홈싸이트, 드림위버(같은 건가?) 등에서는 tld 도 지원하는 것으로 알고 있습니다. 개발자는 C 만 만들어 놓으면 되지요. 물론 DBA가 없다면 M 부분도 손을 대야 하겠지만요. C 는 데이터 가공. M 는 원본 데이터라고 보시면 되겠습니다. 데이터가 있고 그것을 가공하고 보여주는 3단계를 구분한 것이지요. 디자인이 바뀌어도 개발자가 일찍 집에 갈수 있는 방법이 생긴 것이지요.

 

EJB는 위에서 말한 것들 + 알파 가 추가된 것입니다. EJB에서 웹 서비스는 한개의 서비스에 지나지 않습니다. 그래서 덩치가 무지 크고 말 그대로 느리지요. 그리고 개발 또한 무지게 복잡합니다. 현재 EJB가 쓰이지 않는 이유는 여러 가지가 있지만 개발기간이 너무 긴 것이 제 생각으로는 가장 단점인 거 같습니다.

 

가장 간단히 EJB를 설명하면 기존에 나와있는 모든 서버를 한곳에 넣고 돌릴 수 있는 환경을 제공하는 프로그램이라고 보시면 될 거 같습니다.

EJB를 지원하는 프로그램은 상당히 고가였지요. 지금은... 많이 싸졌다고 하는데... 얼마인지는.... 가장 대중적인 weblogic 이 한 4년전에 cpu 2천 만원쯤 했답니다.

 

EJB : 객체생성 및 DB연결 등 자원관리를 EJB 서버에서 해준다고 보시면 됩니다.

 

EJB (Enterprise Java Beans)엔터프라이즈 자바 빈즈 라는 약자입니다.

자바빈은 순수 자바코드로 이루어진 걸 말하니까 자바빈즈는 그런 빈들이 많은걸 말하겠죠. EJB는 속도보다 안전하다고 합니다.

EJB는 대형화 시스템에서 분산컴포넌트를 하기 위해서 쓰는 건데요.

 

applet

웹 상에서 자바와 같은 객체지향 프로그래밍 언어를 써서 웹 페이지와 함께 사용자측으로 보내질 수 있도록 작게 만든 프로그램.

 

AWT

윈도우나, 버튼, 그리고 스크롤 바 등과 같은 GUI컴포넌트 들이 사용된 자바 애플리케이션을 개발할 수 있게 해주는 자바 API이다.

 

bytecode

자바 원시 언어 문장을 포함하고 있는 파일을 컴파일하면 그 결과물로 나오는 것이다.

한번에 한 문장씩 컴퓨터 내에서 실행된다는 측면에서는 실행할 준비가 된 프로그램 모듈과 비슷하지만, 바이트코드 명령어들은 논리적이고 추상적 기계인 자바가상머신(JVM)에 보내는 실제 명령어들이다. 바이트코드는 한번에 한 문장씩 번역되는 형식 외에, 어떤 특정한 시스템 플랫폼에 맞게 JIT컴파일러에 의해 다시 컴파일 될 수 있는데, 이렇게 하면 자바 프로그램의 실행이 더 빨라진다.

 

CGI

웹서버에 있어 사용자의 요구를 응용프로그램에 전달하고 그 결과를 사용자에게 되돌려주기 위한 표준적인 방법. 사용자가 하이퍼링크를 클릭하거나 웹사이트의 주소를 입력함으로써 웹 페이지를 요청하면, 서버는 요청된 페이지를 보내준다. 그러나, 사용자가 웹 페이지의 양식에 내용을 기재하여 보냈을 때, 그것은 보통 응용프로그램에 의해 처리될 필요가 있다. 웹 서버는 으레 그 양식 정보를 조그만 응용프로그램에 전달하는데, 이 프로그램은 데이터를 처리하고 필요에 따라 확인 메시지를 보내주기도 한다. 이렇게 서버와 응용 프로그램간에 데이터를 주고받기 위한 방법이나 규약들을 CGI라고 부른다. 이것은 웹의 HTTP프로토콜의 일부이다.

 

HotJava

미국의 sun사가 제공하는 자바 프로그램 작성 언어로 구현된 웹 브라우저이다. 자바 프로그램(애플릿)을 어느 곳에서라도 네트워크를 통해 내려받기해서 실행할 수 있는 특징이 있다.

 

interpreter

고급언어로 작성된 원시코드 명령문들을 한번에 한 줄씩 읽어 들여서 실행하는 프로그램이다. 기계어 명령문들이 만들어지는 컴파일 단계를 거칠 필요가 없다는 장점이 있다.

 

JAR

웹 브라우저에서 빠르게 다운로드할 수 있도록, 자바 애플릿을 위한 클래스, 이미지 및

사운드 파일들을 하나의 파일에 압축하여 담고 있는 파일이다

 

JavaBeans

sun사에서 나온 객체지향 프로그래밍 인터페이스로, 주요 운영체계 플랫폼의 네트워크 내에 적용될 수 있는 재사용 가능 애플리케이션 또는 컴포넌트를 구축할 수 있게 한다.

 

JavaScript

넷스케이프에서 만든 인터프리터형 프로그래밍 또는 스크립트 언어이다.

 

JDBC

자바로 작성된 프로그램을, 일반 데이터베이스에 연결하기 위한 응용프로그램 인터페이스 규격이다.

 

JDK

sun사에서 나온 자바 소프트웨어 개발 환경이다. 자바 가상머신과 컴파일러, 디비거, 자바 애플릿 및 응용프로그램 개발을 위한 도구들이 포함된다.

 

Jini

sun사가 추구하는 소프트웨어로 네트워크상에서 프린터나 디스크드라이브와 같은 장치들의 접속이나 공유를 단순화하기 위한 것이다.

 

JIT(just-in-time)

자바 바이트코드(반드시 해석되어야만 하는 명령어를 포함한 프로그램)를 프로세서에게 직접 전달할 수 있는 명령어로 바꾸어주는 프로그램이다.

 

JNI(Java Native Interface)

자바와 자연 코드간에 상호 연동을 위해서 사용되는 인터페이스이다.

 

picoJava

자바 바이트코드를 원시 기계어처럼 직접 실행할 수 있는 자바 칩이다.

 

Python

perl과 비슷하게 인터프리터를 이용하는 객체지향 프로그래밍 언어로서, 구문이 명확하고 이해하기가 쉽다.

 

RMI

자바 프로그래밍 언어와 개발환경을 사용하여 서로 다른 컴퓨터들 상에 있는 객체들이 분산 네트워크 내에서 상호 작용하는 객체지향형 프로그램을 작성할 수 있는 방식이다.

 

Smalltalk

객체지향 프로그래밍의 개념을 지원하기 위해 특별히 설계된 순수한 객체 지향적 언어이다.

 

thin client

시디롬 드라이브, 디스켓 드라이브 및 확장 슬롯 등이 없이 오직 필수적인 장치들로서 구성되어, 중앙에서 관리할 수 있도록 설계된 업무용 PC로서 넷PC 또는 네트워크컴퓨터 등과 비슷한 말이다.

 

 

virtual machine

컴파일된 자바 바이너리 코드와 실제로 프로그램의 명령어를 실행하는 마이크로프로세서 간에 인터페이스 역할을 담당하는 소프트웨어를 가리킨다. IBM의 가상머신은 다중사용자가 자원을 공유하는 운영체계를 말한다.

 

JavaOS

네트워크 컴퓨터를 위한 하나의 완전한 환경을 제공하기 위하여 설계된 특성들과 구조를 갖는 Java중심의 운영체제이다.

 

JavaRing

6K NVRAM을 가진 10MHz컴퓨터로 1998 JavaOne회의에서 소개되었다.

자바링에는 애플릿을 돌릴 수 있는 자바 가상 머신이 들어있다.

 

JavaCard

스마트카드나 메모리 제한적인 장치에서 자바 프로그래밍 언어로 작성된 응용프로그램을 동작 가능하게 하는 것이다. 높은 안전성, 이식성, 다중의 응용프로그램을 관리하고 저장하는 기능을 제공한다.

 

EJB

클라이언트/서버 모델의 서버 부분에서 운영되는 자바 프로그램 컴포넌트들을 설정하기 위한 아키텍쳐이다.네트워크 내의 클라이언트들에 분산되어 있는 프로그램 컴포넌트들을 위한 자바빈즈 기술 위에서 구현이 된다.

 

JavaStation

자바 언어로 작성한 프로그램만 실행할 수 있는 전용 칩(자바 칩)에 기반한 플랫폼이다

 

캡슐화(Encapsulation)

클래스는 단순한 자료뿐만 아니라, 자료를 처리할 수 있는 루틴들을 포함하는데, 이 자료와 루틴을 하나의 추상화된 클래스라는 개념에 포함시킨 것을 캡슐화라고 한다.

 

정보은닉(Infromation hiding)

멤버 필드와 메소드는 클래스의 외부에서 접근하지 못하도록 할 수 있는데, 이 것을 정보은닉이라고 한다.

 

상속성(Inheritance)

상속이란 기존에 있는 클래스를 바탕으로 해서 기존 클래스의 특성을 유지하면서 다른 특성을 가함으로서 클래스를 만드는 방법이다.

- subclass, superclass

- class subclass extends superclass

 

다형성(Polymorhism)

같은 이름의 메소드나 연산자가 여러 가지의 기능을 할 수 있음을 의미한다.
-
overloading: 클래스의 이름은 같으나 인자가 다른 경우

- overriding: 인자와 리턴 타입 모두 같은 경우 


*
오버로딩 : 한 클래스 내에 똑 같은 이름의 메소드를 여러 개 선언
메소드 이름은 같지만 파라미터 변수의 수, 타입, 순서가 다르기 때문에 구분가능.

메소드 시그니쳐(signature, 서명
) : 메소드 이름, 파라미터 변수의 수, 타입, 순서를 묶음


*
오버라이딩 : 슈퍼클래스의 메소드와 똑같은 시그니쳐의 메소드를 선언해서 슈퍼클래스의 메소드를
무시하도록 만드는 것을 말한다. 같은 시그니쳐를 갖는 메소드에 대해서만 일어난다.

 

자동 메모리 관리(Auto garbage collection)

메모리가 할당된 객체를 추적, 이 객체가 더 이상 사용되지 않으면 자동으로 메모리를 수거함

- 메모리 누수(memory leak) 오류에서 해방

'Study > Note' 카테고리의 다른 글

USN (Ubiquitous Sensor Network)  (0) 2008.07.31
모바일 개념 및 용어정리  (0) 2008.07.29
객체지향언어 개념 및 용어정리  (0) 2008.07.29
미들웨어, SOA, EAI 개념 및 용어정리  (0) 2008.07.29
C 개념 및 용어정리  (0) 2008.07.29
OS 개념 및 용어정리  (0) 2008.07.29
임베디드 분야 개념 및 용어정리  (0) 2008.07.29
개념용어 정리  (0) 2007.10.08
플리플롭이란?  (0) 2007.08.01
리눅스 공부에 유용한 싸이트들  (0) 2006.01.10

+ Recent posts