자바는 OS에 독립적인 특징을 가지고 있다. 그게 가능한 이유는 JVM(Java Vitual Machine) 덕분이다. 그렇다면 JVM의 어떠한 기능 때문에, OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보도록 하자.개발자가 자바 소스코드(.jav
자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요함.스택 기반의 가상 머신.JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행하는 것이다.Jav와 OS 사이에
클래스에 대한 정보와 함께 클래스 변수(static variable)가 저장되는 영역.JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일(\*.class)을 읽어들여, 클래스에 대한 정보를 메소드 영역에 저장함.모든 인스턴스 변수(멤버 변수)가
추상 클래스는 미완성된 클래스이다.미완성된 클래스는 미완성된 메소드인 추상 메소드를 포함하고 있다.추상 클래스는 혼자로는 클래스의 역할을 다 못하지만, 새로운 클래스를 작성하는 데 있어 그 바탕이 되는 부모 클래스로서의 중요한 의미를 갖는다. 왜냐하면 클래스를 작성함에
인터페이스는 인터페이스를 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록 강제한다.인터페이스의 목적은 구현 객체가 같은 동작을 한다는 것을 보장하는 것이다.일종의 추상 클래스다. 하지만 추상 클래스보다 추상화 정도가 높아서 추상 메소드 이외의 일반 메소드
클래스가 아니며, 클래스와 관련이 없다.추상 메소드와 상수만을 멤버로 가진다.한 개의 클래스가 여러 인터페이스를 구현할 수 있다. (다중 구현 가능)java 8 부터 default 메소드가 추가되었다.default 키워드가 붙은 메소드는 구현할 수 있으며(일반 메소드처
최근의 OS는 멀티 태스킹을 지원하지 않는게 없다.멀티 태스킹은 두 가지 이상의 작업을 동시에 하는 것을 말함.예를 들어, 컴퓨터로 음악을 들으며, 웹서핑을 하는 것이다.실제로 동시에 처리될 수 있는 프로세스의 개수는 CPU 코어의 개수와 동일한데, 이보다 많은 개수의
쓰레드는 우선순위(priority)라는 속성(멤버변수)을 가지고 있는데, 이 우선순위의 값에 따라 쓰레드가 얻는 실행시간이 달라짐.쓰레드가 수행하는 작업의 중요도에 따라 쓰레드의 우선순위를 서로 다르게 지정하여 특정 쓰레드가 더 많은 작업시간을 갖도록 할 수 있다.ex
더이상 사용하지 않는 객체 등을 메모리에서 해제(삭제)하는 JVM의 작업Java 프로세스가 동작하는 과정에서 GC는 불필요한 또는 더이상은 사용하지 않는 객체들을 메모리에서 제거함으로써, Java 프로세스가 한정된 메모리를 효율적으로 사용할 수 있게 해준다.또한 JVM
실제 개발 시에는 다루고자 하는 컬렉션(자료구조)의 특징을 파악하고 어떤 인터페이스를 구현한 컬렉션 클래스를 사용해야하는지 결정할 줄 알아야 한다. 학교 수업 시간에 배운 자바 컬렉션을 '자바의 정석'이라는 책을 통해서 다시 한번 정리 하고자 한다.데이터 군을 저장하는
Stack과 Queue Stack > LIFO (Last In First Out) | 메소드 | 설명 | | --- | --- | |boolean empty() | 스택이 비어있는지 알려준다. |Object peek() | 스택의 맨 위에 저장된 객체를 반환. po
Hashtable과 HashMap의 관계는 Vector와 ArrayList의 관계와 같아서 Hashtable보다는 새로운 버전인 HashMap을 사용할 것을 권한다.HashMap은 Map을 구현했으므로 Map의 특징, 키(key)와 값(value)을 묶어서 하나의 데이