아놔. 요즘 배그에 빠져서는 블로그는 나몰라라 하고 있다 ㅠㅠ 매번 쓸때마다 오랜만이긴 한데. 역시나 오랜만이니까 기초지식 다뤄보겠다. 이번에는 자바의 클래스 패스와 그것을 시스템 환경변수에 설정하는 목적에 대해 포스팅 해보겠다. 클래스 패스(Class Path)란?자바 가상머신이 프로그램을 실행할 때, 클래스 파일을 찾는 데에 기준이 되는 파일 경로라고 할 수 있다.즉, 자바 가상머신이 클래스 파일을 찾는 경로다. 물론, 이 클래스 패스는 개발자인 너, 나, 우리가 지정해준다.지정해주지 않으면 자바 가상머신은 현재 디렉토리에서 필요한 클래스들을 가져와서 쓴다. 현재 디렉토리는 현재 명령 프롬프트가 가리키고 있는, 위치하고 있는 그 경로를 말한다. >> java 파일명.class이러한 명령어를 명령 프롬..
이전에 자바 웹 프로젝트를 생성하는 것을 설명한 적이 있었당. 요것을 모르겠다면 이전 포스트 읽고오시길. => 2017/06/01 - [Programming/Lib, Tools] - Eclipse :: 이클립스에서 웹 애플리케이션(Web Application) 프로젝트 만들기 이번 포스트에서는 이클립스의 자바 웹 애플리케이션 구조 와 실무의 자바 웹 애플리케이션 구조 를 설명하고 어떻게 다른지 비교하면서 왜. 대체 왜 실무에서는 다른 프로젝트 폴더 구조를 사용하는지를 이야기하며 마무리하도록 하게따. 1. 이클립스 웹 애플리케이션 디렉토리 구조$workspace/프로젝트명/build /classes /src /WebContent /META-INF /WEB-INF /lib 이거슨 이클립스의 자바 웹 애플리케..
자바 메모리 구조 이전 포스트에서 자바의 메모리 구조는 크게 메소드 영역, 힙 영역, 스택 영역으로 나뉘어 있다는 것과, 메소드 영역이 뭔지 살짝 알아봤다. 이번에는 힙 영역과 스택 영역은 뭔지, 각각 어떤 역할을 하는지, 좀 헷갈리니까 친절히 코드로 비교도 해볼까 한다. 2. 스택 영역(Stack Area) 스택 영역에는 지역변수와 매개변수가 저장된다. 그렇담 지역변수는 뭐고, 매개변수는 뭔가여. 한글로 접하니까 오히려 헷갈리는데 지역변수 = 로컬변수(local variable), 매개변수 = 파라미터(parameter)라고 들으면 아~~ 뭐야. 할 것임. 이래도 모르겠으면 로컬변수는 메소드 내에서 선언된 변수들, 매개변수는 메소드에 아규먼트로 넘겨주는 값들로 이해하고 넘어가자. 로컬변수와 매개변수의 ..
다시 힘을내어 포스팅을 해보려고 한다. 아자아자! 비록 구글 너가 애드센스 승인을 빨리 안해주지만 나는 힘을내어 포스팅할거야. 오늘 다루려고 하는 것은 자바의 메모리 구조이다. 메모리 구조가 어떻게 되어 있고, (메모리 구조가 여러 영역으로 나누어져 있는데 그 영역이) 어떻게 다른지를 아주 짧고 간단하게 스쳐지나가듯 짚도록 하겠다. 자바의 메모리 구조 이전 포스트였던가. 자바 가비지 컬렉터를 이야기하면서 JVM이 실행되면 OS가 JVM에게 필요한 메모리를 할당해준다고 했다. 컴퓨터 프로그램이 실행되기 위해 필요한 메모리를 우리는 '메인 메모리'라고 한다. 우리말로는 주기억장치쯤 되시겠다. 물리적으로는 우리가 램(RAM)이라고 부르는 아이다. 이 메인메모리를 관리하는게 OS이고, JVM(자바 버추얼 머신!..
자바의 가비지 컬렉터(Garbage Collector) 즉, 쓰레기 수집 기능을 이해하려면 메모리에 대한 이해가 먼저다.1. 자바 실행 프로그램인 JVM과 메모리메모리는 OS가 관리하는데, 모든 프로그램들은 OS 위에서 돌아간다. 그리고 프로그램이 돌아가려면 당연 메모리가 있어야 한다. 때문에 프로그램들은 OS에게 "나 메모리좀 줘" 하고 요청을 한다. 자바의 실행 프로그램인 JVM도 예외는 아니다. 이 친구도 메모리가 필요하면 OS에게 요청해야한다. 메모리좀 달라고. 그런데 OS가 처음부터 자기가 가진 메모리 전부를 줘버리면, 다른 프로그램들에게 줄 메모리가 없게 된다. 때문에 각 프로그램에게 메모리의 일정부분만 빌려주는(?) 방식으로 관리가 된다. A 프로그램 JVM B 프로그램 - 이렇게 OS가 메..
자바에서 패키지를 사용하지 않고, 다른 클래스에서 정의한 메소드를 사용한다고 해보자. 경로: src/a.javapublic a { public static void wow() { System.out.println("a.class 실행결과로 A가 나왔습니다!"); } } 경로: src/haha/b.java public b { public static void wow() { System.out.println("b.class 실행결과로 B가 나왔습니다!"); } } 이렇게 정의된 자바파일이 있다고 해보자. a.java파일은 src 폴더 바로 밑에 있고, b.java파일은 src폴더 밑에 있는 haha폴더 밑에 있다.그런데 이 두 파일은 모두 'wow'라는 이름의 메소드를 정의하고 있다. 명령창에서 각각 이 두..
java 파일과 class 파일 구분하여 관리하기 왜 구분해야 하지?source code 파일(.java)과 byte code 파일(.class)이 한 폴더에 함께 있는 것은 바람직하지 못하다.배포할 때에는 실행파일인 바이트코드 파일, 즉 class파일만 배포하는데 여기에 소스코드 파일인 java 파일이 섞여 있으면 관리하기가 불편하기 때문이다. 따라서 두 종류의 파일을 서로 다른 폴더로 분리시켜야 한다. 어떻게 구분하지?구분하는 방법은 쉽다.class파일은 컴파일이 완료되면 생성된다. 그 말은 컴파일 할 때 옵션을 줘서 어느폴더에 저장될지 지정해주면 된다는 말씀이다. 폴더를 지정해주기 전에, 그 폴더를 만들어줘야 한다.있지도 않은 폴더에 무언가를 담을 수는 없으니까. 보통은. 일반적으로는. 대부분은.소..
JRE(Java Runtime Environment)Java bytecode를 실행할 때 필요한 프로그램들로, 자바 프로그램을 실행하는 일반 사용자를 위한 SW이다. JRE는- Java Virtual Machine(JVM) * JVM은 바이트코드를 실행하는 프로그램이다.- 필수 자바 라이브러리로 구성되어 있다. JDK(Java Development Kit)자바 프로그램을 만드는 개발자가 사용하는 SW이다.JDK에는 자바프로그램을 개발하는데 필요한 프로그램들이 들어 있는데, 당연히 JVM과 필수 자바 라이브러리를 포함한다. 즉, JDK는 JRE를 포함하고 있다.JDK > JRE !!!프로그램을 개발했으면 실행시키고 테스트도 해봐야 하니까... JVM이 있는 것은 당연한거다.다시 정리해서, JDK는- JRE..