본문 바로가기

Dev/[Java]

[JAVA] 1. 자바 기초(JDK, JRE 차이)

반응형

JAVA 는 컴파일 방식과 인터프리터 방식을 지원함.

 

 

JDK(Java Development Kit)

 - for Developer
 - 개발 도구(컴파일러, 라이브러리)
 - JRE (Java Runtime Environment) 포함

JRE (Java Runtime Environment)
 - for User

 

사용자에겐 왜 JRE 가 필요할까?(마인크래프트 설치할 때 JAVA 설치하지?)

 - JAVA는 플랫폼(OS) 독립적이다.

소스코드를 컴파일하면 byte code 가 생성된다.(중간코드)

 

예를 들어

개발OS : windows

배포OS : linux 

 

라면, 리눅스용 JRE가 있으면 실행이 가능하다.

각자의 운영체제에 맞는 JRE가 있으면 실행이 되기때문에 플랫폼 독립적이라는 것.

 

 

J2SE : Java 2 Standard Edition

- Standalon, 독립적으로 동작한다.(서버필요없음)

- JRE만 있으면 동작함.

docs.oracle.com/en/java/javase/11/docs/api/index.html

 

J2EE : Java 2 Enterprise Edition

- Servlet, JSP등을 쓴다.

- 서버가 있어야지만 동작

https://docs.oracle.com/javaee/7/api/toc.html

 

 

예전에는 EJB라는게 있었는데 요즘은 Spring 이 대체한다.

 

jdbc를 Wrapping 해 준 것이 MyBatis

예전에는 ibatis였는데 구글에서 관리하면서 MyBatis로 바뀜

여기선 쿼리작성을 함.

 

JDBC는 SQL 문을 소스코드 내부에 작성한다.

그래서 개발자가 아닌 사람들은 접근이 힘듬

 

그래서 MyBatis 는 SQL문을 별도의 XML파일에 작성한다.

이로 인해 역할도 나누어 협업할 수 있고, DBA에게 의뢰도 가능하다.

 

MyBatis 는 상용화 된지 오래 되었다. 전자정부 프레임워크에서도 MyBatis사용

 

JPA : Java Persistence API

: Hibernate (JPA의 구현체, 개발 표준)

:ORM(Object Relational Mapping)

 

 

그러니까 MyBatis나 Hibernate 나 기존 불편한 것들을 개선한 것이다.

차이는 MyBatis 는 DB  SQL들을 , Hibernate 는 객체를 관리.

 

 

 

JDK폴더 파헤치기

 

BIN폴더에

javaw.exe 

javadoc.exe -> 요거는 뭐냐면, API문서(WEB사이트)처럼 문서만들어준다.

 

lib폴더에

jrt-fs.jar

src.zip -> 이건 소스코드다. 자바 컴파일러가 돌아가기 위해 들어가있는 API들의 소스코드가 내장되어있다.

자바 원래의 API들이 어떻게 동작하는지 소스코드 편집기열어서 확인가능

 

 

자바의 특징을 가능하게 해주는 요소

Java Virtual Mahchine

C같은 경우 컴파일하면 어셈블리코드가 나오기때문에 다른 운영체제에서돌리려면 컴파일 다시해야댐..

JAVA는 컴파일 뒤 Byte code 가 나오므로, 각 운영체제 별 JVM있으면 사용가능

 

 

Garbage Collection

가비지컬렉션은 더이상 사용하지 않는 메모리 알아서 해제해준다.

 

 

이클립스/STS실행 시 JAVAW 못찾을 때..

 

STS.ini파일 열어서 맨 위에 아래 항목 추가해준다

 

 

-vm

 

 

 

 

 

 

 

 

 

이클립스에서 프로젝트 생성하면 알아서 Class와 Java 파일 만들어준다.

아래 참고...

 

이건 네비게이터 뷰를 열어야 보인다.

 

 

해당 클래스나 메서드로 이동하는 단축키 : F3

빌드 단축키 : ctrl+F11

 

 

 

여기 String args 파라미터에 값 주고싶으면 Run Configuration 에서 Argument 탭에 Program Argument 항목에 

넣어주면된다.

 

공백을 쓰려면 ""로 묶어주어야한다.

 

컴파일 단계 

1. Compile

2) Bytecode verifire

3) Runtime

런타임에서는 검증함

 

C++에서는 동적, 정적바인딩 이란 개념있어서

컴파일 시점인지 실행시점인지 특정할 수 있는데

여기선 어떻게 진행될지? 자바에선?

 

 

문제1 가비지 컬렉션에 대한 설명으로 맞는것? -- 1

1. 더이상 쓰지 않는 메모리 자동회수

2. 컬렉션 시점 예측가능하다.

 

문제2 byte코드에 대한 설명으로 맞는것은? -- 3

1. 개발자가 직접 작성한 소스코드?

2. 바로 실행 가능?

3. 플랫폼 독립적?

 

문제3 자바의 실행순서?

1. Compiler-bytecode verifire - 

 

문제4 JVM이 하는일은?

1. 자바 소스코드를 바이트코드로 변환

2. 바이트코드를 해석해서 자바프로그램 실행

3. 자바 소스코드를 컴파일한다.

4. 

 

문제 5 자바에 대한 설명으로 틀린것은?--4

1.플랫폼 독립적?

2. 객체지향적?

3 쓰레드 사용?

4. 메모리 해제를 개발자가 직접?

 

 

주석 달고 문서화 시키는방법

 

1. /** . 이렇게 치고 엔터치면 자동완성됨

 

 

클래스 밖에 쓸 경우

 

 

 

클래스 안에 쓸 경우

 

 

반응형