Languages/Java

[HUFS/컴퓨터 프로그래밍] #1 Java의 개요

성중 2021. 2. 26. 20:52

Java 시작하기

 

*프로그래밍 과정

소스파일 작성 -> 소스파일을 컴파일러를 통해 기계어로 컴파일 -> 기계어를 실행

- 기계어: 0과 1로 이루어진 코드

- 소스파일: 프로그래밍 언어로 작성한 파일

- 컴파일(compile): 소스 파일을 기계어 파일로 번역

- 컴파일러: 기계어로 번역해주는 프로그램


# Java의 개요

 

~본래 가전제품 운영체제 개발을 목적으로 개발되었지만 이후 인터넷 친화적 개발 언어로 개선됨, 기존 언어보다 안정적이고 편리하며 플랫폼에 독립적

 

~안드로이드와 Java (2007~)

하드웨어의 영향을 받지 않고 에플리케이션 개발이 가능해 Java활용, 다양성을 강점으로 안드로이드의 급성장

 

~오라클의 Java 인수 (2010)


-이클립스

1999년 IBM에서 개발해 오픈소스로 기증한 통합 자바 개발 환경

개발 도구를 만들 수 있는 플랫폼 구조

 

*Java의 3가지 버전

Java SE(Standard Edition): 자바 기본 개발 환경

Java EE(Enterprise Edition): 서버기반 프로그램 개발환경(서블릿, JSP등)

Java ME(Micro Edition): 모바일 및 임베디드 시스템 개발환경

 

*안드로이드와 Java

- 자바는 안드로이드의 기본 개발 언어로 스마트폰, 태블릿, 스마트TV등에 널리 사용

앞으로 스마트폰 개발의 주역을 담당할 것으로 전망


 

*빅데이터와 Java

빅데이터: 방대한 데이터를 분석해 유의미한 정보를 추출, 사용자에게 최적화된 서비스를 제공하거나 미래 예측 등에 활용하는 기술

 

빅데이터 분석과 관련된 여러 소프트웨어는 주로 오픈소스에 기반을 두는데 이 소프트웨어의 상당수는 자바로 개발, 혹은 각 소프트웨어 간 중계 및 분석 기능에 자바를 활용


#Java의 특징

*Java는 한 번 코드를 작성하면 어떤 운영체제에서도 잘 작동함

(Windows, Unix/Linux, Mac OS X) 모두 동일하게 실행

‘Write Once, Run Anywhere’

• 메모장이나 이클립스(Eclipse) 등의 텍스트 에디터로 작성된 소스코드를 javac.exe로 컴파일하면 바 이트코드가 생성(바이트코드는 확장명이 *.class인데 사람은 이 파일의 내용을 읽을 수 없음)

• 바이트코드는 모든 운영체제에서 실행이 가능하지만, 단 운영체제에 JAVA 가상 머신인 JVM(Java Virtual Machine)이 미리 설치되어 있어야 한다. JVM은 오라클에서 무료로 배포하고 있다.

 

-Java 가상머신(JVM): 하드웨어나 운영체제를 가리지 않고 설치되어 JAVA코드를 실행해주는 핵심 역할, 다만 최적화된 바이너리에 비해 속도가 느릴 수 있음

~소프트웨어로 설치하고 작동시켜야함(오라클 홈페이지에서 무료 배포)

 

*메모리 자동 정리

- 가비지 컬렉터가 필요 없는 메모리를 자동 정리

 

*완전한 객체지향 언어

-객체지향프로그래밍(OOP: Object-Oriented Programming): 순서대로 프로그래밍 하는 것이 아니라 여러 객체(부품)을 만들고 이 객체들 을 연결해서 더 큰 프로그램을 구현하는 기법

- C++의 객체지향적인 장점을 가져오면서 포인터를 사용하지 않음

 

*멀티스레드 프로그래밍 지원

하나의 프로세스 안에서 여러 개의 스레드가 동시에 작동 되도록 프로그래밍 가능

동시 작동 스레드로 병렬 처리가 가능해져 복잡한 대용량 작업을 빠르게 처리 가능

자체 API에서 멀티스레드 프로그래밍을 지원해줌


*다양한 응용 프로그램을 작성

▪ HWP, 알집, 엑셀 등과 같이 일반 컴퓨터에서 작동하는 ‘데스크톱 응용 프로그램’, 웹 브라우저에서 다운로드된 후 작동하는 ‘애플릿’, 웹 서버에서 작동하는 ‘JSP(JAVA Server Pages)’ 또는 ‘서블릿(survlet)’, TV나 냉장고 등의 가전제품에서 작동하는 ‘임베디드 프로그램’, 안드로이드 스마트폰이나 태블릿에서 작동하는 ‘모바일 앱’을 JAVA로 작성 가능

 

*풍부한 오픈소스 라이브러리

대표적인 오픈소스 라이브러리 : Apache Commons, Google Guava, Lucene, Spring, Hadoop, Cassandra 프로젝트

 

*Java 플랫폼

▪ JDK(Java Development Kit) : 자바 프로그램 개발에 필요한 구성 요소, JAVA프로그램을 작성하기 위한 컴파일러와 자바프로그램을 개발할 수 있는 환경(JVM=JRE)가 포함 되어 있으며, 컴파일된 JAVA바이트코드를 실행하기 위한 JRE 만 설치되어 있으면 된다.

 

▪ JRE(JAVA Runtime Environment ) : 자바 프로그램 실행에 필요한 구성요소, JVM의 역할을 하는 소프트웨어, JRE는 JAVA 바이트코드를 실행하기 위해 먼저 설치되어야 한다. JAVA 초창기에는 이 처럼 JRE를 모든 컴퓨터에 설치해야 하는 것에 대해 부정적인 시각도 있었지만, 지금은 컴퓨터에 설치하는 백신, 압축 프로그램, 웹 브라우저 등과 같은 기본적인 프로그램으로 인식되고 있다. 오늘 날에는 JAVA로 작성된 프로그램이 별 거부감 없이 사용

 

▪ API(Application Programming Interface) : 자바 응용 프로그램 개발에 사용하는 라이 브러리


<용어정리>

◼ 애플릿(applet) : JAVA로 작성한 작은 소프트웨어로 웹 서버에 등록해놓고 html페이지에서 <APPLET> 태그로 경로를 지정하면 웹브라우저에서 작동되도록 설계됨, 보완에 취약함

 

◼ 가비지컬렉터 : 이름 그대로 쓰레기를 수집하는 기능. 여기서 쓰레기란 더 이상 사용하지 않는 메모리 를 의미함. C나 C++에서는 필요없는 메모리 사용해제를 프로그래머가 직접해야 했지만, 자바는 가비 지 컬렉터가 사용하지 않는 메모리를 추기적으로 수거합니다.

 

◼ 스레드(thread) : 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다.

 

◼ 자바 서블릿(Java Servlet) : 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.

 

◼ 임베디드 시스템(embedded system, 내장형 시스템) : 기계나 기타 제어가 필요한 시스템에 대해 , 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다.