본문 바로가기

언어/Java

Java란?

※ Java 특징
객체지향, 플랫폼*에 독립적이다(JVM이 필요하다, 각 os별로 필요)
오픈소스 기반(투명도가 높음)

* 플랫폼(소프트웨어/어플리케이션이 구동 가능한 실행환경)에 독립적이다(어떤 기기에서든지 사용될 수 있다)
-> A.java(소스코드) 개발자가 알 수 있는 문법으로 구성, 이게 컴파일되고, A.class 파일이 생성됨
A.class 파일은 ByteCode(0,1 묶음) 체계 -> JVM(자바가상기계, 실행기)에서 windows os가 읽을 수 있는 0,1로 해석(interpreted)해서 실행


C언어는 컴파일하면 A.obj 파일 생성. Binary Code(0,1로 구성된 컴파일된 파일, windows os가 해석할((알아들을)수 있는 0,1 파일)
-> 해당 파일은 그 즉시 실행 가능하나 리눅스 os에 가져가면 실행 불가능, 플랫폼에 종속적이다.

 

※ 자바플랫폼 : 자바 소프트웨어가 실행될 수 있는 환경
API만 변경됨, JDK내부에 JRE가 포함, 실행만 하고싶으면 JRE만 있으면되는데 작업을 하려면 JDK가 필요
- Java Standard Edition (에디션은 플랫폼으로 보기) : 자바로 만든 GUI, Network 프로그램이 실행될 수 있음
    -> JDK(JRE(JAVA SE용 API + Java Runtime JVM) + 여러 응용프로그램(컴파일용 프로그램, 인터프리터 프로그램, 문서 작성용 프로그램)이 합쳐져서 구성))
- Java Enterprise Edition : Web, EJB(EJB를 실행하기 위해서 WAS(Web Application Server = 미들 웨어(여러 서비스 제공))가 필요한데, WAS가 고가인데다 무겁고 컴퓨터 성능 좋아야해서 요새는 잘 안씀, 결합도는 높고 응집도가 낮아서
재사용성이 떨어지고 공부하기 어려움, 이걸 대신해서 가벼워진 Spring Framework*가 나옴)
    -> JDK(JRE(JAVA EE용 API + Java Runtime JVM) + 여러 응용프로그램(컴파일용 프로그램, 인터프리터 프로그램, 문서 작성용 프로그램)이 합쳐져서 구성))
- Java Micro Edition : 스마트카드, 2G어플리케이션(자바기반의 모바일 프로그램을 만드는 2g폰 안에 들어있는 프로그램..)
    -> JDK(JRE(JAVA ME용 API + Java Runtime JVM) + 여러 응용프로그램(컴파일용 프로그램, 인터프리터 프로그램, 문서 작성용 프로그램)이 합쳐져서 구성))

: JRE만 있어도 실행은 가능한데 우리는 개발을 해야하니까 응용프로그램까지 합쳐진 JDK를 사용한다.

  우리는 수업에서 JAVA SE와 JAVA EE의 WEB을 배울 예정

 

 

* Spring Framework

EJB의 대체품(cf. EJB에서 파생된 Hibernate -> Mybatis -> jpa라는 기술로 점차 변화됨)

 

· Sun의 자바는 오픈소스 기반인데 Oracle이 인수해서 기업에서 돈을 주고 사는 기업용 Java로 변화중 (오라클 JDK 사용)
그래서 오픈소스 Java(Open JDK 사용)도 나타남, 오라클 JDK 11버전으로 우리는 공부할 예정

 

·  java.sun.com 접속하면 다른 링크로 변경(리다이렉트) - Java SE 11 x64 Compressed Archive 다운로드

경로 변경 안해서 C:\Program Files\Java\jdk-11\bin가 컴파일파일 위치

설치 끝내고 Next Step 눌러서 뜨는 Overview (Java SE 11 & JDK 11 ) (oracle.com) 즐겨찾기에 저장

 

컴파일 프로그램
자바 인터프리터 프로그램

※ 자바는 인터프리터(소스 코드를 실행할 때 한 줄씩 기계어로 번역하여 즉시 실행. ex)Python, JavaScript, Ruby, PHP) 언어가 아니라 컴파일(소스 코드를 실행하기 전에 전체 코드를 기계어로 번역하는 과정. ex) C, C++, Java)해서 쓰기 때문에 필드가 생성자 선언 전에 선언되지 않아도, 순서 상관없다.

// 둘 다 상관없다
class A {
    int mf;
    A() { }
    void m() { }
}

class A {
    A() { }
    int mf;
    void m() { }
}

'언어 > Java' 카테고리의 다른 글

if 조건문, Math.random() 함수  (0) 2023.07.25
IDE 아닌 방법으로 Java 사용할 때 경로 지정하기  (0) 2023.07.25
연산자  (0) 2023.07.24
자료형  (0) 2023.07.24
IDE 아닌 방법으로 Java 사용해보기  (0) 2023.07.24