ggoggo
1. JAVA 개요 (1) 본문
프로그래밍 언어란?
- 컴퓨터 언어
1) 기계어
- 0과 1로 이루어진 이진법 숫자로 구성된 것
- 번역의 과정을 거치지 않고 계산기가 직접 알아들을 수 있음
2) 어셈블리 언어(저급언어)
- 기계어를 기억하기 쉬운 기호어로 표시한 것 => 기계어에 가까움
- 이 언어는 일단 번역(assembling)을 거쳐 기계어로 전환된 뒤 사용
3) 컴파일러 언어(고급언어)
- 컴퓨터가 바로 이해할 수 없기 때문에 번역의 과정(compiling)을 거쳐서 기계어로 전환되어 사용
ex. C, C++, Java
- 프로그래밍
- 수식이나 작업을 컴퓨터에 알맞도록 정리해서 순서를 정하고 컴퓨터 특유의 명령코드로 고쳐 쓰는 작업
- 컴퓨터의 명령 코드를 쓰는 작업을 특히 coding이라 함
- 프로그래밍 언어로 작성된 내용을 source라 함
- 구조적 프로그래밍
: 컴퓨터의 프로그램을 만들 때 쉽게 이해할 수 있고, 수정하기 위우며, 정확성을 검증하기 쉬운 프로그램이 되도록 문제를 단계적으로 상세히 풀어나가서, 최종적으로는 제어구조가 명확한 프로그램을 만드는 방법론
: 함수로 구성
: 프로그램을 기능 단위로 만듦
ex. COBOL, C, Basic
- 객체지향 프로그래밍
: 객체라는 작은 단위로 모든 처리를 기술하는 프로그래밍 방법으로, 처리 요구를 받은 객체가 자기 자신의 안에 있는 내용을 가지고 처리하는 방식
: 클래스로 구성
: 프로그램을 객체 단위로 만듦
ex. C++, Java
자바란?
- 1991년 선마이크로시스템스(Sun Microsystems)에서 제임스 고슬링이 주도하여 냉장고, TV 등의 가전제품에서 사용될 운영체제를 개발하는 것을 목표로 시작
- 처음에는 오크(Oak) 또는 그린(Green)이라는 이름으로 불리다 나중에 JAVA로 바뀜
- C,C++등 다양한 언어가 존재했으나 아래의 목적을 위해 JAVA 개발
- 가전 제품의 종류 및 제조사가 다양 => 각 플랫폼에 독립적이어야함
- 가전제품은 재부팅 어려우므로 안정적이어야함, 특히 동적 메모리 할당과 수거가 자동으로 수행되어야함
- 네트워크에서 자동으로 내려 받는 과정이 필요하며, 이때 악성 코드가 침투할 수 없도록 포인터의 개념을 없애야 함.
==> 개발자가 handling할 수 없음(외부 개입 막음)
- C++의 프로그래밍 방식
C,C++등의 기존 언어는 각 운영체제별로 서로 다른 코드를 만들고 별도로 컴파일해야 실행 가능
- Java의 프로그래밍 방식
JAVA는 하나의 JAVA코드 만들면 모든 운영체제에서 동일하게 실행 가능 => 경제적, 효율적
"Write Once, Run Anywhere"(근디 jvm이 있어야 가넝ㅋㅋㅋ)
- Java의 특징
C++의 객테지향적인 장점을 그대로 가져오면서 동시에 C++의 여러 가지 문제점 보완
1. 간결한 프로그래밍 문법 제공
- 문법 쉬움
- C,C++의 장점이자 문제점인 포인터 삭제
- 메모리 관리를 가비지 컬렉터(garbage collector)가 전담하여 프로그래머가 메모리에 대해 고민하지 않고 프로그래밍 로직에 집중
2. 이식성 높음
- WORA(Write Once Run Anuwhere)
- 자바 소스코드는 한번만 작성해놓으면 JRE(Java Runtime Enviroment)가 설치된 다양한 운영체제에서 실행 가능
**이식성 : 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말함
3. 객체 지향 언어
- OOP(Object Oriented Programming)
- 부품 객체를 먼저 만들고, 이걸들을 조합해 전체 프로그램을 완성하는 기법
- 자바는 처음부터 OOP 개발용 언어로 설계
- 캡슐화, 상속, 다형성 기능 지원
4. 멀티 스레드(Multi-Thread) 구현
- 하나의 프로세스 안에서 여러 개의 스레드(thread)가 동시에 작동되도록 프로그래밍 가능
- 동시에 작동되는 스레드를 작성하면 병렬 처리가 가능해져 복잡한 대용량 작업을 빠른 시간 내에 처리 가능
- 자체 API에서 멀티스레드 프로그래밍(multi thread programming) 지원하여 쉽게 병렬 프로그래밍
** 스레드 : 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위
5, 다양한 응용 프로그램 작성 가능
- 현재 사용되는 대부분의 IT 환경에서 작동하는 응용 프로그램 작성 가능
- HWP, 알집, 엑셀 등과 같이 일반 컴퓨터에서 작동하는 '데스크톱 응용 프로그램', 웹 브라우저에서 다운로드된 후 작동하는 '애플릿', 웹 서버에서 작동하는 'JSP(Java Server Pages)' 또는 '서블릿(survlet)', TV나 냉장고 등의 가전제품에서 작동하는 '임베디드 프로그램', 안드로이드 스마트폰이나 테블릿에서 작동하는 '모바일 앱'을 JAVA로 작성 가능
6. 오픈 소스 라이브러리 풍부
- 외부의 다양한 오픈 소스 라이브러리(open source library) 사용 가능
- 수많은 프로젝트에서 이러한 라이브러리를 오픈 소스로 제공하기 때문에 구현하고자 하는 고급 기능을 누구나 가져와서 사용할 수 있다.
- 다양한 오픈 소스 프로젝트는 일회성 제공에 그치는 것이 아니라 커뮤니티를 통해 체계적인 소스 관리와 업그레이드가 이뤄지고 있다.
- 실무에서 JAVA 언어를 많이 사용하는 가장 큰 이유 중 하나는 이러한 오픈 소스 라이브러리를 사용하여 자신의 고급 기능을 빠른 기간 내에 안정적으로 구현할 수 있다는 것이다.
- 대표적인 오픈 소스 라이브러리로는 Spring, Apache Commons, Google Guava ...
- Java 가상 머신(JVM)
- 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상의 운영체제 역할
- JVM에서 '가상 머신'은 실제로는 소프트웨어로 설치되고 작동
- 운영체제에 맞게 설치되어야 한다.
- JVM 역할을 하는 소프트웨어를 JAVA 소프트웨어 또는 JRE(Java runtime environment)라 한다.
- JVM은 JDK 또는 JRE를 설치하면 자동으로 설치된다.
자바 개발 환경 구축
- JRE(java runtime environment) = JVM + 표준 클래스 라이브러리(JAVA API)
자바 프로그램을 실행만 할 경우 설치
- JDK(Java Development Kit) = JRE + 개발도구(Java 컴파일러 + Java 툴)
자바 프로그램 개발하고 실행하기 위해 반드시 설치
자바 프로그램 개발 순서
Java 프로그램 구성
- 클래스와 메소드
- 주석
- 실행문과 세미콜론
'3-2 > JAVA' 카테고리의 다른 글
length, length(), size()의 차이 (0) | 2022.10.07 |
---|---|
2. 출력과 변수(3) (0) | 2022.09.16 |
2. Java 프로그래밍 기초 (2) (0) | 2022.09.15 |
2. 통합 개발환경 eclipse 설치 (1) (0) | 2022.09.14 |
1. JAVA 개발환경 구축 (2) (0) | 2022.09.14 |