자바 사용하기전에..

안녕하세요 아기크롱입니다.

작성된 글을 읽으시면서 빼먹은 부족한 부분은 댓글고고^^ 

그럼 시작합시다

 

시작에 앞서서, 자바란 무엇인지부터 개발환경 셋팅까지 알아봅시다. 

1. 자바란, 

 1991년, 미국의 썬 마이크로시스템즈에서 전자제품을 네트워크로 연결하는 '그린 프로젝트'를 위해 진행하다가 제임스 고슬링이 C++ 주축으로 개발된 완벽한 객체 지향 개념의 프로그램 언어이다.1995년, netscape 2.0 발표되면서 부터 “Java”이름으로 바뀜.

지금은 스마트폰을 비롯한 각종 장비와 데스크톱에서 실행되는 애플리케이션을 개발하는 중추적인 언어로 자리잡힘.

 

C언어의 포인터는 제거됨.

C++의 복잡한 연산자, 오버로딩, 다중상속 제거됨.

 더욱 편리한 기능이 추가됨 


2. 자바의 특징

객체지향 프로그래밍 언어이다.

 객체 지향 프로그래밍(Object Oriented Programming, OOP)이란 프로그램을 개발하는 기법으로, 부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 말한다. 자바는 100% 객체 지향 언어이며, 객체를 만들기 위해 설계도인 클래스를 작성하고 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다. 또한 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원한다. 


속도가 느린 단점이 있다.

자바는 한 번의 컴파일링으로 실행 가능한 기계어가 만들어지지 않고 JVM에 의해 기계어로 번역되고 실행하는 과정을 거치기 때문에 C나 C++의 컴파일 단계에서 만들어지는 완전한 기계어보다는 속도가 느리다. 그러나 바이트 코드를 기계어로 변환해주는 JIT 컴파일러 같은 기술 적용으로 JVM의 기능이 향상되어 속도의 격차가 많이 줄어들었다. (JVM을 이용하기때문에 C언어보다는 속도가 느리다)


플랫폼에 독립적이다. (= 이식성이 높은 언어이다)

 이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다. 자바 언어로 개발된 프로그램은 소스 파일을 수정하지 않아도, 자바 실행 환경(JRE)이 설치되어 있는 모든 운영 체제에서 실행 가능하다. JVM이라는 가상 기계를 사용하여 이진코드로 된 기계어로 만들고 각 플랫폼에 맞게 실행시켜준다. 때문에 JVM만 있다면 어떤 플랫폼에서든 실행가능하다.


편리하고 안정적인 언어이다. 

 C와 C++의 복잡하고 불편한 기능을 제거하고, GUI, 쓰레드, 예외처리, 네트워크, 분산처리외 메모리 관리나 객체처리도 자바가 자동으로해결해서, 다른 언어에 비해 발생되는 복잡한 문제들을 미리 막아준다. 

쉽게말해서, (= 오픈소스 라이브러리가 풍부하다) 자바는 오픈소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 많다. 오픈소스 라이브러리를 사용하면 개발 시간을 단축하면서 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다.


다양한 애플리케이션을 개발할 수 있다

 자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제(OS)에서 실행되는 프로그램을 개발할 수 있다. 또한 콘솔 프로그램, 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에 실행되는 프로그램을 개발할 수 있다.


동적 로딩(Dynamic Loading)을 지원한다

 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성한다. 또한 유지보수시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일할 필요가 없다. 따라서 유지보수가 쉽고 빠르다.


멀티스레드를 쉽게 구현할 수 있다

 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.


함수적 스타일 코딩을 지원한다

 함수적 프로그래밍은 대용량의 데이터 병렬 처리와 이벤트 지향 프로그래밍을 위해 적합하기 때문에 최근 들어 다시 주목받고 있다. 자바는 이 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션 요소를 필터링, 매핑, 집계 처리하는게 쉬워지고, 코드가 매우 간결해진다는 장점이 있다.


예외처리가 불편하다

 자바는 다른 언어들과 달리 프로그램 실행 시 발생할 수 있는 예외(Exception)들을 개발자가 직접 선언하여 처리해야 한다. 그렇지 않으면 아예 컴파일이 되지 않는다.

 

메모리를 자동으로 관리한다

 C++이 메모리 관리를 위해 개발자가 직접 코드를 작성해야 하는 반면, 자바는 개발자가 메모리에 직접 접근할 수 없으며 자바가 직접 메모리를 관리한다. 객체를 생성할 때 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거한다. 따라서 개발자는 메모리 관리의 수고스러움을 덜고, 코딩에 좀 더 집중할 수 있다.


그외에 분산 네트워크가 적합하고 뛰어난 보안성도 가지고 있다.


 3. 객체지향프로그래밍?

 소프트웨어를 개발할 때, 부품에 해당하는 객체들을 먼저 만들고 이것을 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍(Object Oriented Programming, OOP)라고 한다. 객체 지향 프로그램의 특징으로는 캡슐화, 상속, 다형성을 들 수 있다.


객체

 객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말한다. 객체는 속성에 해당하는 필드(field)와 동작에 해당하는 메소드(method)로 구성되어 있다.


클래스

 클래스(Class)는 객체를 만들기 위한 설계도라고 볼 수 있다. 클래스에는 객체를 생성하기 위한 구성멤버들(필드, 생성자, 메소드)이 정의되어 있다. 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 한다. 그리고 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.


캡슐화

 캡슐화(Encapsulation)란 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말한다. 외부 객체는 객체 내부의 구조를 알 수 없고, 객체가 노출해서 제공하는 정보(필드와 메소드)만 이용할 수 있다. 캡슐화로 필드와 메소드를 보호하는 이유는 외부의 잘못된 접근으로 인해 객체가 손상되는 것을 막기 위해서이다. 자바는 캡슐화된 멤버의 노출 여부를 결정하기 위해 접근 제한자를 사용한다.


상속

 상속(Inheritance)이란 부모 역할을 하는 상위 객체가 자식 역할을 하는 하위 객체에게 자신이 가진 속성(필드와 메소드)을 물려주는 것을 말한다. 하위 객체는 상위 객체로부터 상속받은 필드와 메소드를 그대로 사용할 수 있고, 하위 객체의 상황에 맞게 수정(오버라이딩)해서 사용할 수도 있다. 상속은 이미 만들어져 있는 상위 객체를 재사용하여 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고 반복된 코드의 중복을 줄여준다. 또한 상위 객체의 수정으로 모든 하위 객체들의 수정 효과를 가져오므로 유지 보수 시간의 최소화에도 도움이 된다.


다형성

 다형성(Polymorphism)이란 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말하는데, 하나의 타입에 여러 객체를 대입할 수 있기 때문에 다양한 기능을 이용할 수 있고, 객체의 부품화가 가능하다. 자바는 다형성을 위해 부모 클래스나 인터페이스의 타입 변환을 허용한다. 부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.


4. JVM, JRE, JDK란?

JRE와 JDK

 자바 프로그램을 개발하기 위해서는 Java SE(Standard Edition)의 구현체를 설치해야 한다. Java SE의 구현체는 자바 개발 키트(Java Development Kit, JDK)자바 실행 환경(Java Runtime Environment, JRE) 이렇게 두 가지 버전이 있다. 


 JRE는 자바 가상 기계(JVM), 라이브러리 API 등의 개발 도구를 포함하며 JDK는 JRE에 컴파일러까지 포함한 버전이다. 자바 프로그램을 개발하는 것이 아닌, 이미 개발된 프로그램만 실행시킬 목적이면 JRE를 설치하면 되고 프로그램을 개발해야 한다면 JDK를 설치해야 한다.



JVM(Java Virtual Machine)

 자바 프로그램은 완전한 기계어가 아닌 중간 단계의 바이트 코드이기 때문에 OS는 자바 프로그램을 바로 실행시킬 수 없다. 따라서 바이트 코드를 완전한 기계어로 해석한 뒤 실행할 수 있는 가상의 운영체제가 필요한데 이것이 자바 가상 기계 즉, JVM(Java Virtual Machine)이다.

 JVM은 자바 프로그램을 실행하는 가상의 운영체제 역할을 한다. 자바의 이식성이 좋은 이유는 이처럼 JVM이 실제 운영체제와 프로그램 사이에서 중계하는 역할을 하기 때문이다. 따라서 자바 소스 파일(*.java)과 바이트 코드 파일(*.class)은 OS와 상관 없이 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 OS에 종속적이다.



 자바 프로그램 개발 순서


1. 개발자가 소스 파일을 작성한다.

2. 작성한 소스 파일을 컴파일하면 컴파일러는 바이트 코드 파일을 생성한다.

3. JVM은 바이트 코드 파일을 해석하여 해당 OS에 맞게 기계어로 번역한다.

4. 프로그램이 실행된다.


 HelloJava.java(소스파일) -> 자바 컴파일러(javac.exe) -> 

 바이트코드(HelloJava.class) -> 바이트코드(HelloJava.class) -> 자바 인터프리터(java.exe) 실행결과 출력



5. 이클립스란? (=개방형 플랫폼)

 이클립스(eclipse)는 자바 프로그램을 쉽게 개발하기 위한 통합 개발 환경(IDE)의 하나이다. IBM을 중심으로 주요 소프트웨어 개발 업체들이 모여 만든 컨소시엄을 말합니다. 그리고, 여기서 만든 오픈 소스 프로그램 또한  Eclipse라고 부릅니다.


이클립스는 플러그인(plug-in)의 개념으로 구성되어 있다. 플러그인은 코드나 데이터가 묶여진 것으로 특정 기능을 제공한다. 사용자들이 이클립스에서 자신이 필요한 플러그인을 설치함으로써 다른 프로그래밍 언어를 위한 개발 도구로 변환할 수 있다

6. 자바 개발환경 구축하기(Setting 방법)

 - 이클립스 설치하기 https://www.eclipse.org/downloads/packages/

 - JDK설치하기 https://www.oracle.com/index.html

 - 환경변수 설정하기 

ex) JAVA_HOME :: C:\Projram Files\Java\jdk1.8.0_74 

    Path :: C:\Projram Files\Java\jdk1.8.0_74\bin

    (Class Path :: &JAVA_HOME%\lib)

 

- Tomcat 설치하기 http://tomcat.apache.org/

 - Oracle 설치하기 (시험판은 11g Express Edition만 가능하다) https://www.oracle.com/kr/downloads/









 Reference Site:: http://yolojeb.tistory.com/17

'WEB 기초 > Java' 카테고리의 다른 글

조건문(if, switch) & 반복문(for, while, do~while)  (0) 2018.11.17
변수, 형변환 그리고 연산  (0) 2018.11.17