반응형
Java 언어와 Java 프로그램
Java 언어
- Java는 미국 선 마이크로시스템즈(Sun Microsystems)라는 회사가 1990년 말에 개발하기 시작해 1996년에 첫 버전이 발표된 객체지향 프로그래밍(OOP, Object-Oriented Programming) 언어이다.
- Java는 프로그래밍 언어와 실행환경(Runtime)을 함께 포함하고 있다.
즉, Java 언어로 작성된 프로그램의 실행환경으로 기존 운영체제를 사용자히 않고 별도로 만들어진 'Java 플랫폼'을 사용한다. - Java는 문법적으로 C나 C++과 유사하지만 가장 큰 차이점이 있는데 이는 바로 Java가 완전한 객체지향 프로그래밍 언어라는 점이다.
- Java 프로그래밍 언어의 특징
- Java는 별도의 실행환경이 있기 때문에 운영체제와 무관하게 어디서든 실행할 수 있다. 이러한 특징을 '플랫폼에 독립적이다'라고 한다.
- 객체지향 프로그래밍 언어이다.
- 응용 프로그래밍과 웹 프로그래밍, 네트워크 프로그래밍에 용이하다.
- 변수의 자료형에 대한 검사가 엄격하여 자료형의 불일치로 발생할 수 있는 오류를 최소화했다.
- 예외처리 기능이 강화되었다.
- 멀티 스레딩을 지원한다.
- 스레드(thread)란 하나의 프로그램 내부에서 진행될 수 있는 세부 작업흐름이라고 할 수 있다. 따라서 멀티 스레딩이란 하나의 프로그램 내부에서 여러 개의 세부 작업이 동시에 진행되는 것이다.
반응형
Java 프로그램
- Java 프로그램 : Java 프로그래밍 언어로 작성된 후 컴파일되어 Java 플랫폼에서 실행될 수 있는 프로그램을 Java 프로그램이라 한다.
- Java 프로그래밍 언어로 작성된 소스 파일의 확장자는 '.java'이다.
- Java 소스 파일을 컴파일하면 확장자가 '.class'인 새로운 파일이 만들어지는데 이를 Java 프로그램이라고 한다.
- Java 프로그램은 클래스(class) 파일 또는 바이트코드(bytecode)라고도 한다.
- Java 프로그램은 실행 방식에 따라 애플리케이션(application), 애플릿(applet) 두 가지로 나뉜다.
Java 애플리케이션
- 컴파일 된 후 Java 플랫폼에서 바로 실행되는 Java 프로그램이다.
- Windows나 Unix/Linux와 같은 운영체제에서 Java 플랫폼을 통해 실행되는 일반적인 Java 프로그램이 여기에 속한다.
Java 애플릿
- 컴파일된 후 HTML로 작성된 웹페이지에 포함되어 웹 브라우저를 통해 실행되는 Java 프로그램을 말한다.
- 요즘에는 잘 사용하지 않는다.
- HTML에 애플릿 프로그램을 포함시키기 위해 <APPLET> 태그를 이용한다.
반응형
Java 플랫폼과 개발환경
- Java 플랫폼은 'Java 프로그래밍 언어로 작성된 Java 프로그램이 동작할 수 있는 환경'을 의미하며 운영체제와는 별개로 존재하는 또 다른 '실행환경'을 의미한다.
- 컴파일된 프로그램(바이트코드)는 운영체제에 의해 실행되는 것이 아니라 별도의 Java 플랫폼이 실행시켜준다.
즉, Java 프로그램이 구동되려면 운영체제 외에 해당 운영체제에 적합한 별도의 Java 플랫폼이 설치되어 있어야 한다는 점이다. - 운영체제 별로 적합한 Java 플랫폼을 설치한다는게 오히려 더 복잡하다고 느낄 수 있지만 Java 플랫폼을 설치하면 한 번 컴파일된 Java 프로그램은 운영체제와 상관없이 어디서든 동작할 수 있게 되어 소스 코드의 수정이나 재 컴파일이 필요없다.
- Java 플랫폼의 특징
- 프로그램의 실행을 위한 하드웨어와 소프트웨어 환경 제공
- Java 프로그램을 실행시켜주는 실행 환경
- 한번 만들어진 Java 프로그램은 운영체제와 상관없이 Java 플랫폼이 설치되어 있는 곳이면 어디서든 실행이 가능함
- Java 플랫폼은 Java VM(Virtual Machine : 가상기계)와 Java API(Application Programming Interface)로 구성된다.
Java VM
- Java VM은 JVM이라고도 한다.
- VM은 가상의 기계라는 뜻이며 Java 프로그램을 실행시켜 주는 '구동 엔진'을 의미한다.
- Java 프로그램의 실행에 필요한 모든 사항을 관리하고 지원해준다.
- VM은 가비지 컬렉션(garbage collection)이라고 불리는 메모리 정리 작업을 자동으로 실행한다.
Java API
- Java 프로그램을 실행하는 데 필요한 각종 라이브러리를 의미한다.
- 기본 API는 Java 플랫폼에 기본적으로 포함된 라이브러리를 뜻한다.
- 확장 API는 그 이외의 라이브러리를 의미하는데 별도의 설치가 필요하다.
- API의 분류별 계층 관계는 '.표기법'을 사용한다.
ex) java.lang - Java 소스 코드의 컴파일 및 실행에 필요한 Java 컴파일러, Java VM, Java 기본 API를 한데 묶어 Java SDK(Java Software Development)라고 하는데 줄여서 JDK라고도 한다.
반응형
Java 메모장 코딩 및 실행
- 원하는 경로에 메모장을 새로 만든다. 이때 주의!!
확장자를 꼭 .txt에서 .java로 변경해야한다.
- 코드를 작성하고 저장한다.
public class Hello {
public static void main(String args[]) {
System.out.println("Hello!");
}
}
- cmd를 연다.
- 메모장이 저장된 경로로 찾아간다.
javac Hello.java
java Hello
를 순서대로 입력한다.
반응형
- 소스 코드를 컴파일하려면 JDK에 포함되어 있는 'javac' 명령어를 사용 → 컴파일되면 .class 파일이 생성된다.
- 바이트코드를 실행하려면 'java' 명령어를 사용한다.
- Java 애플리케이션이 실행되려면 하나의 main 함수를 포함해야 한다.
- Java 애플리케이션은 하나의 public class를 포함하고 있으며, 그 이름은 소스 파일의 이름과 같아야 한다.
Java 프로그램 살펴보기
주석(comments)
- 주석은 소스 코드의 이해를 돕기 위해 프로그래머가 작성하는 설명문
- 컴파일이나 프로그램 실행과는 상관없이 작성할 수 있다.
- /* ... */ : 여러 줄에 걸쳐 작성할 수 있음
- /** ... **/ : 소스 코드 맨 앞에 소스 코드에 대한 전반적인 설명을 적기 위한 주석
- // ... : 일반적으로 한 줄의 주석을 달고 싶을 때 사용한다.
클래스
- 모든 Java 프로그램은 클래스 정의를 하나 이상 가지고 있어야 한다.
// 클래스 정의
class 클래스 이름 {
.....
}
- Java 소스 코드를 컴파일하면 '클래스이름.class'라는 클래스 파일(바이트코드)이 생성된다.
- 클래스 파일의 파일 이름은 소스 코드 안에 정의되어 있는 클래스 이름에 따라 만들어진다.
- 여러 개의 클래스가 정의되어 있는 소스 코드를 컴파일하면 정의된 클래스의 개수만큼 클래스 파일이 만들어진다.
main() 메서드
- main() 메서드는 Java 프로그램을 실행시킬 때 가장 먼저 실행되는 메서드
- public static void main(String args[])와 같은 형식으로 정의되어야 함
- public과 static의 순서를 바꿀 순 있지만 일반적으로 public static으로 쓰는게 관례
반응형
객체지향 프로그래밍
- 세상에 존재하는 유형 또는 무형의 대상인 객체(object)는 상태와 동작을 가진다.
예를 들어 자동차라는 대상은 모델명, 생산연도, 배기량, 제조회사 등의 상태를 가질 수 있고 전진, 후진, 속도 올리기, 내리지 등의 동작을 가질 수 있다. - Java 프로그래밍 언어는 객체지향 프로그래밍 언어로서 프로그래밍의 대상을 상태와 동작을 갖는 객체라고 가정한다.
- 객체지향 언어에서는 데이터와 함수를 분리하여 정의하지 않고 '클래스(class)'라는 새로운 개념을 도입하여 하나로 통합하여 대상을 표현한다.
- 프로그램에서는 클래스를 통해 객체가 만들어지며 객체는 데이터를 의미하는 상태와 함수를 의미하는 동작을 함께 갖게된다.
객체와 클래스
- 객체 : 독립적으로 존재하는 개별 대상 하나하나를 표현한 것으로 클래스의 실체를 의미한다. → 객체는 특정 클래스의 인스턴스이다.
- 클래스 : 공통적인 특징이 있는 비슷한 대상을 묶고 정형화하고 추상화시킨 개념이다. 또한 프로그램 구성의 기본 단위이이다.
- Java에서는 객체를 직접적으로 정의하여 다루는 것이 아니라 비슷한 유형의 객체들을 묶어 정형화시키고 추상화시킨 클래스를 먼저 정의하고 클래스를 이용하여 객체를 다룬다.
- 추상화 : 프로그래밍의 대상이 되는 사물을 표현하는 방식으로, 사물의 구체적인 모든 사실이 아닌 추상적이고도 전형적인 사실만으로 사물을 표현하고 설명하는 방식이다.
ex) 버스, 트럭, 승용차, SUV, 택시를 추상화하면 자동차가 된다. - Java 언어에서는 추상화 도구로 '클래스'를 사용한다.
- 클래스는 필드(field)와 메서드(method)로 구성된다.
- 필드 : 클래스가 표현하고자 하는 대상들이 공통적으로 가지는 상태값을 저장하는 변수
- 메서드 : 필드에 저장되어 있는 상태값을 조회 또는 변경하거나 상태와 관련된 특별한 동작을 수행하는 데 사용된다.
- 필드와 메서드는 클래스에 캡슐화 되어있다.
- 클래스 정의로부터 객체들이 만들어지고 객체들 간의 상호작용으로 프로그램이 동작한다.
반응형
상속
- 상속 : 클래스와 클래스 간의 관계를 나타내는 용어로, 클래스 A가 클래스 B로부터 B의 구성요소인 필드와 메서드를 물려받았을 때, '클래스 A는 클래스 B를 상속한다.' 또는 '클래스 A는 클래스 B로부터 상속받는다.'라고 말한다.
- 이때 클래스 A를 클래스 B의 서브(sub), 자식, 파생(derived) 또는 하위 클래스라 한다.
- 클래스 B를 클래스 A의 슈퍼(super), 부모, 기반(base) 또는 상위 클래스라 한다.
- 슈퍼 클래스는 여러 서브 클래스의 공통적인 특성 및 기능을 추상화하여 일반화시킨 것이다.
- 기존에 만들어진 슈퍼 클래스를 재사용하여 서브 클래스를 쉽게 정의할 수 있고, 슈퍼 클래스를 통해 서브 클래스를 쉽게 이해할 수 있다.
반응형