JVM: 자바 가상머신으로 java가 실행되기 위해 필요하다.(자바 실행환경=JRE)
JRE: 실행환경->java 명령만 있음(실행환경만 있는것)
JDK :JRE와 개발툴이 합쳐진 형태->개발환경->java+javac(빌드)
JDK만 중요하게 생각하고 다른 것들이 어떤 역할인지 자세하게 몰랐는데 알게 되었다.
자동으로 빌드,실행해주는 툴
ex) Ant,Maven,Gradle
Build script: 소스는 어디에 있고 어떻게 컴파일 해야하는지에 대한 정보가 담김
task 들로 이루어져 있다.
예전에 Gradle으로 프로젝트를 할때 구글링을 통해 찾아보다가 Maven으로 개발한 코드를 보고 놀래며 그냥 껐었는데 내가 buildtool개념에 대해 무지했던 것 같다...
빌드 툴과 ide가 어떤 관계인지 정확하게 알게 된 것 같다.
포인터와 비슷한 개념
java에서는 다음과 같은 값 말고는 다 Refernce 값이다
array는 reference 값이다
Call by value=> 사용되는 인자가 값을 넘겨줌 따라서 결과 값에 변화가 없음
Call by reference=> 사용되는 인자가 주소를 넘겨주어 주소를 참조하여 데이터 변경가능
(int a-> Call by value/ Integer b-> Call by reference)
String s1= "박연수"
Sring s2="데브코스"
이런 식으로 될때마다 Sting Pool에 문자열이 쌓이게 된다.
결과적으로 += 연산이 지속될때마다 Sting Pool에 계속해서 문자열들이 쌓이게 되며 많은 메모리가 필요하다--> 비효율적이다
전자: Heap안에 s라는 객체 생성(주소값으로 참조하여 값 변경가능)
후자: Constant String Pool에 "박연수"라는 리터럴이 생성
String Buffer을 사용
-.gitignore을 잘 활용하기
빌드 결과, 바이너리, 로컬 설정, 키/보안 관련 파일들
+.class, .jar, build/
예전에 ec2서버 연동과정에서 ignore에 build/ 파일을 추가하지 않아서 계속 build fail났었던 적이 있었는데 잘 활용해야겠당...