★ 프로그래밍 개론 2일차 중요 포인트
1. 컴파일 방식과 인터프리터 방식의 차이
2. Java의 Hybrid 방식 (컴파일 + 인터프리터)
3. JIT, AOT 방식의 차이
4. 자바 개발도구 (JRE,server JRE, JDK)
컴파일 방식과 인터프리터 방식의 차이:
컴파일 방식: 소스 코드를 전체적으로 기계어로 번역하는 과정을 거쳐 컴파일된 실행 파일을 생성합니다. 실행 파일은 컴퓨터에서 직접 실행되며, 실행 시에는 추가적인 변환 과정 없이 기계어 코드를 실행합니다. 대표적인 예시로는 C, C++ 언어가 있습니다.
인터프리터 방식: 소스 코드를 한 줄씩 읽어들여 바로 실행하는 방식입니다. 소스 코드를 실행 파일로 변환하지 않고, 실행 중에 인터프리터가 필요한 부분을 해석하고 실행합니다. 대표적인 예시로는 Python, Ruby 언어가 있습니다. 인터프리터 방식은 빠른 개발과 플랫폼 독립성을 제공하지만 실행 속도가 상대적으로 느릴 수 있습니다.
Java의 Hybrid 방식 (컴파일 + 인터프리터):
Java는 컴파일과 인터프리터를 혼합한 방식으로 동작합니다. Java 소스 코드는 Java 컴파일러에 의해 바이트 코드로 컴파일됩니다. 이 바이트 코드는 JVM(Java Virtual Machine)에서 인터프리터 또는 JIT 컴파일러에 의해 실행됩니다. 초기에는 인터프리터를 통해 실행되며, 인터프리터는 바이트 코드를 한 줄씩 해석하여 실행합니다. 그러나 JVM은 바이트 코드를 동적으로 분석하여 자주 실행되는 부분을 실시간으로 기계어로 컴파일하여 실행 성능을 향상시킵니다.
JIT(J ust-in-Time) 컴파일 방식과 AOT(Ahead-of-Time) 컴파일 방식의 차이:
JIT 컴파일 방식: JIT 컴파일러는 프로그램 실행 중에 바이트 코드를 실시간으로 기계어로 변환합니다. JIT 컴파일러는 프로그램의 실행 패턴을 분석하여 자주 실행되는 부분을 식별하고, 해당 부분을 컴파일하여 기계어로 실행합니다. 이는 프로그램의 실행 시점에 최적화를 수행하여 실행 성능을 향상시킵니다.
AOT 컴파일 방식: AOT 컴파일러는 프로그램을 실행하기 전에 전체적으로 바이트 코드를 기계어로 변환하는 과정을 거칩니다. 컴파일된 실행 파일은 미리 컴파일된 상태로 제공되며, 실행 시점에서 추가적인 변환 과정 없이 기계어로 실행됩니다. 이는 실행 시점에 컴파일 과정이 필요 없으므로 실행 성능이 빠릅니다.
자바 개발도구 (JRE, Server JRE, JDK):
JRE (Java Runtime Environment): JRE는 Java 애플리케이션을 실행하기 위한 최소한의 환경을 제공합니다.
JRE는 JVM, 클래스 라이브러리, 런타임 시스템 등을 포함하며, Java 애플리케이션을 실행하기 위한 기본적인 요소를 제공합니다. JRE에는 개발 도구와 컴파일러는 포함되어 있지 않습니다.
Server JRE: Server JRE는 서버 환경에서 Java 애플리케이션을 실행하기 위한 JRE입니다. Server JRE는 JRE와 비슷하지만, 추가적인 도구와 옵션을 제공하여 서버 환경에서 더욱 최적화된 실행을 가능하게 합니다.
JDK (Java Development Kit): JDK는 Java 애플리케이션을 개발하기 위한 도구 모음입니다. JDK는 JRE에 개발 도구와 컴파일러를 추가한 것으로, Java 애플리케이션 개발에 필요한 모든 도구와 라이브러리를 제공합니다. JDK를 사용하여 Java 소스 코드를 작성, 컴파일, 디버깅 및 실행할 수 있습니다.
https://dev-with-gpt.tistory.com/67
깃허브 repository 생성
깃허브에 로그인 한 후에 내 홈에서 repository를 클릭
repository 에서 New 버튼을 눌러 새로운 repository 생성
Repository name 을 적어주고 README file 을 생성을 체크한 뒤 create 버튼 클릭
깃허브 commit
cd 명령어를 통해서 기본 user 폴더 경로로 이동하여 "git"폴더 생성
git clone 명령어를 통해서 이전에 생성한 원격 저장소에 있는 모든 파일과
디렉토리의 히스토리를 로컬 컴퓨터로 복제.
//명령어
git clone https://github.com/"git-name"/"Repositories"
//예시
git clone https://github.com/same-woo/bitcamp-study
git add . 명령어는 현재 디렉토리와 하위 디렉토리에 있는 모든 변경된 파일들을 스테이징 영역에 추가.
git commit 명령어는 스테이징 영역에 있는 변경 사항들을 로컬 저장소에 저장.
커밋 메시지를 함께 작성하여 해당 커밋에 대한 설명이나 변경된 내용에 대한 정보 남김
git add .
git commit -m "커밋 메시지"
※ 아래와 같이 unkown 문구가 출력될 경우에는 아래 적혀있는 명령어를 따라서 email과 name 을 설정.
이전에 사용하던 user가 이미 있어 올바르게 실행되지 않는 경우에도 아래와 같이 진행해주면 된다.
//명령어
git config --global user.name "username"
git config --global user.email "useremail"
//예시
git config --global user.name "same-woo"
git config --global user.email "samewoo@naver.com"
add 와 commit 명령어의 실행 확인을 위해서 기본적인 "Hello,world !" 문구를 출력하는
java 파일을 생성된 폴더 안으로 복사하여 이동
※ 여기서 생성된 폴더란 위에서 언급된 C:\Users\bitcamp\git\bitcamp-study> 경로를 일컫음.
올바르게 commit이 완료되었다면 아래와 같이 변경된 정보가 출력.
git push 명령어를 통해서 로컬 저장소의 커밋들을 원격 저장소로 업로드
깃허브 push & New personal access token (classic)
여기서 로그인을 요청하는 새 팝업창이 나오게되는데, git id로 로그인해주거나
이때 보안을 위해서 토큰을 생성해줄 수 있다.
1. GitHub 웹사이트에 로그인합니다.
2. 오른쪽 상단 사용자 이미지를 클릭하고 "Settings"를 선택.
3. 왼쪽 메뉴에서 "Developer settings"로 이동
4. "Personal access tokens"를 선택.
5. "Generate new token" 버튼을 클릭.
6. 토큰에 대한 이름을 지정하고 필요한 권한(scope)을 선택.
7. 생성된 토큰을 안전한 장소에 저장하고 기록.
(※ 토큰은 이후에 사용자 인증에 필요하므로 유출되지 않도록 주의해야 합니다.)
8. git push 에서 pwd를 입력하라는 창이 뜨면 해당 tokens를 입력해주면 된다.
https://dev-with-gpt.tistory.com/68
JAVA 설치하기
https://www.rosehosting.com/blog/how-to-install-java-17-lts-on-ubuntu-20-04/
서버에 로그인 및 서버 OS 패키지 업데이트
먼저 SSH를 통해 루트 사용자로 Ubuntu 20.04 서버에 로그인한다.
(※ 여기서 naver cloud 계정 공인IP를 사용하였다.)
ssh root@IP_Address -p Port_number
시작하기 전에 서버에 설치된 모든 Ubuntu OS 패키지가 최신인지 확인해야한다.
다음 명령을 실행하여 이를 수행할 수 있다.
apt-get update
apt-get upgrade
Ubuntu 20.04 리포지토리에서 OpenJDK 17 설치
apt install openjdk-17-jdk openjdk-17-jre
설치가 완료되면 다음 명령을 사용하여 Java 버전을 확인해준다.
java -version
javac -version
JDK 설치 및 해시 주소 확인하기
https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
JDK 설치 홈페이지에서 설치 파일을 보면 파일 다운로드 링크 주소와 sha256이 있다.
여기서, SHA256은 디지털 서명 알고리즘에 사용되어 디지털 문서에 서명하고 확인하여
데이터가 변조되지 않았는지 확인하는 주소이다.
sha256 링크를 눌러보면 다음과 같이 주소가 나온다.
PowerShell 에서 다운로드 폴더에 들어가 설치된 파일링크의 Hash 주소를 확인하는 명령어이다.
다음과 같이 링크가 서로 일치하는 것을 확인할 수 있다.
SHA256는 암호학적으로 안전한 해시 함수로 알려져 있으며, 데이터의 무결성과 인증을 위해 널리 사용됨.
중요한 데이터의 보호, 디지털 서명, 비밀번호 보안, 블록체인과 같은 다양한 분야에서
SHA256의 중요성은 계속해서 증가하고 있는 상황이다.
JAVA 환경변수 설정
Java 환경변수 설정
Java 환경 변수를 올바르게 설정하는 것은 Java 개발과 실행을 원활하게 수행하기 위해 필수적이다.
Java 실행 파일에 쉽게 액세스하고, 개발 환경을 구성하며, 필요한 라이브러리 및 클래스에 쉽게 접근할 수 있다.
Windows:
1. 제어판을 열고 "시스템 - "고급 시스템 설정"을 클릭.
2. "환경 변수" 버튼을 클릭.
3. "시스템 변수" 섹션에서 "새로 만들기"를 클릭.
4. 변수 이름에 "JAVA_HOME"을 입력하고, 변수 값에 Java JDK 설치 경로를 입력.
(예: C:\Program Files\Java\jdk1.8.0_301)
5. "시스템 변수" 목록에서 "Path" 변수를 선택하고, "편집"을 클릭.
변수 값 끝에 "%JAVA_HOME%\bin;"을 추가.
(여기서 기존의 oracle이 남아있다면 제거해주면된다.)
올바르게 설치가 되었는지 확인해주기
echo $env:JAVA_HOME
java -version
echo $env:PATH
echo $env:JAVA_HOME 명령은 PowerShell에서 Java 환경 변수인 JAVA_HOME의 값을 출력하는 명령.
java -version 명령은 설치된 Java의 버전 정보를 출력하는 명령
echo $env:PATH 명령은 PowerShell에서 환경 변수인 PATH의 값을 출력하는 명령