본문 바로가기

Development/Java

(7)
Servlet은 무엇이며 어떻게 동작하는가? 웹서버 구축을 위해서 Java를 사용한다면 알아야하는 Servlet이라는 클래스에 대해 알아보자. 서블릿의 사용법보다 서블릿이 무엇이며 웹에서 어떤 환경 활용되고 있는지, 어떤 원리로 동작하고 있는지에 대해 중점적으로 알아보려 한다. 자바 서블릿이 웹 페이지를 동적으로 생성하게 해주는 클래스라고 하는데 어떻게 도와주는 것일까? 이것을 이해하기 위해선 웹이 어떻게 통신하는지부터 이해해야 한다. HTTP 웹은 HTTP라는 비연결성 프로토콜을 이용해 통신을 한다. 메세지 방식에는 request와 response가 있는데, 서버측에 요청(request)을 하면 서버는 요청에 맞는 데이터를 응답(response)한다. 보통 요청을 보내고 응답을 받는 쪽을 클라이언트라 말하고, 요청을 받고 응답을 보내는 쪽을 서버..
상수와 final 키워드 상수상수는 변수와 달리 변하지 않는 수이다.자바의 상수에는 리터럴과 심볼릭 상수가 있다.리터럴 상수값 또는 리터럴 값을 의미정수, 실수, 문자, 문자열, 불리언이 리터럴에 해당된다.리터럴은 값 그 자체이므로 리터럴에 리터럴을 대입할 수 없다.10 = 100; // 10이라는 정수에 100을 대입할 수 없음"words" = "abcd"; // "words"라는 문자열에 "abcd"라는 문자열을 대입할 수 없음true = 100; // true라는 불리언값에 정수 100을 대입할 수 없음리터럴 상수도 기본 타입이 존재한다.예를들어 정수는 기본적으로 int 타입, 실수는 double 타입이 적용된다.리터럴 Workflow변수를 선언하면, 수는 operand stack 공간에 일시적으로 저장되었다가 변수라는 메..
JVM JVM이란? JVM(Java Virtual Machine)은 bytecode를 실행하기 위해 필요한 가상머신이다. bytecode는 사용자가 작성한 순수한 Java source file이 아닌, 컴파일러에 의해 컴파일된 파일을 의미하며, JVM은 컴파일된 bytecode를 운영체제에 알맞은 기계어로 번역하여 실행가능하게 만든다. 즉, OS가 달라도 Java실행에 필요한 컴파일러와 JVM이 있다면 실행가능하다는 말이며 OS에 종속적이지 않다는 말이 된다. 다르게 말하면 JVM에 종속적인 특징을 가진다고도 할 수 있다. JVM의 구성요소 실행과정을 매우 간소화해보자면, 클래스로더가 바이트코드를 메모리에 적재하고 Execution Engine을 통해 실행하며, 실행 방식은 인터프리터 방식과 JIT 컴파일러 방..
String의 특징에 대해 알아보자 (String Constant Pool) String 자바에서 문자열을 사용할 때 흔히 쓰는 자료형이다. Primitive Type처럼 빈번하게 사용되지만, String은 Primitive Type이 아닌 char의 배열로 이루어진 Class자료형이라 할 수 있다. String의 경우 특별한 특징들을 가지고 있는데, String의 값은 불변성을 가지며, String은 두가지의 메모리를 사용할 수 있다. 불변성을 가진다는 것은 무엇이고, 두가지의 메모리를 사용한다는 것은 어떤 의미인지 정리해보려 한다. String Constant Pool과 Heap String은 사용빈도가 매우 높기 때문에 조금 더 효율적으로 사용할 수 있는 String Pool에 저장하는 방식을 택했다. String Pool에 저장한다는 것은 같은 문자열을 공유한다는 것을 의..
String과 char의 변환과 String 요소 접근 String의 요소에 접근하기 String은 배열처럼 요소에 접근이 불가능하다. charAt()함수는 요소를 반환한다. String str = "apple"; str.charAt({num}); // num에 index를 의미한다. 해당 index의 요소를 반환한다. char배열을 String으로 전환 인자 할당 char[] charArr = { 'a', 'p', 'p', 'l', 'e' }; String str = new String(charArr); String.valueOf() 사용 char[] charArr = { 'a', 'p', 'p', 'l', 'e' }; String str = String.valueOf(charArr); StringBuilder char[] charArr = { 'a', '..
Java 환경변수, 클래스패스 환경변수 java 코드를 실행하기 위해선 java 컴파일러를 통해 코드를 컴파일하여 바이트코드(.class) 변환해주어야 한다. 변환된 바이트코드는 OS가 실행하기 위해 변환된 것이 아닌 JVM을 통해 실행되는 파일이다. Java는 JVM에 종속적인 언어이기 때문에 JVM을 통해 실행될 수 있게끔 변환되는 것이다. 위의 작업은 IDE에서 모두 진행해주지만, 터미널 등의 환경에서 실행할 때 편리한 실행을 위해 환경변수를 등록해 어디서든 실행할 수 있는 환경을 만들어두는 것이 좋다. 환경변수란? 그렇다면 환경변수에 대하여 알아야할텐데, 환경변수란 컴퓨터의 어떤 경로에서든 해당 프로그램을 실행할 수 있도록 지정해두는 것이다. Java 소스를 실행하기 위해선 JVM이 필요하다고 언급했다. JVM으로 java파일..
[Java]Package, import Package 자바 클래스를 체계적으로 관리하기 위해 사용 폴더 구조 패키지가 다르다면 Class의 이름이 같아도 사용할 수 있다. Package package 키워드는 해당 파일이 어떤 package 소속인지 알려주는 역할을 한다. package myFile; // myFile 패키지에 존재하는 클래스 public class Name{...} 하위패키지(서브패키지) 하위 패키지는 상위 패키지 안에 존재하는 패키지이다. 상위 패키지가 하위 패키지를 포함하고 있지만, 하위 패키지 내의 클래스 사용을 원한다면 구분하여 접근해야 한다. 도트(.)를 사용해 위치 표현 package myFile.subPackage; // subPackage에서 작성된 class public class Name{...} impor..