Language/Java 27

[Java] 객체 지향 언어 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍의 패러다임 중 하나로 객체의 관점으로 프로그램을 설계하는 방법입니다. 작은 문제들을 해결할 수 있는 객체들을 만든 뒤, 이 객체들을 조합해서 큰 문제를 해결하는 상향식(Bottom-Up) 해결법을 도입했습니다. 이 객체란 것을 일단 한번 독립성/신뢰성이 높게 만들어 놓기만 하면 그 이후에 그 객체를 수정 없이 재사용할 수 있으므로 개발 기간과 비용이 대폭 줄어들게 됩니다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소포트웨어 개발에 많이 사용됩니다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 직관적인 코드 분석을 가능하게 하는 장점을 갖.. Language/Java 2021. 9. 29.
[Java] 제네릭 (Generic) 프로그램에서 변수를 선언할 때 모든 변수는 자료형이 있습니다. 메서드에서 매개변수를 사용할 때도 자료형을 가지고 있습니다. 대부분은 하나의 자료형으로 구현하지만, 변수나 메서드의 자료형을 필요에 따라 여러 자료형으로 바꿀 수 있다면 프로그램이 훨씬 유연할 것입니다. 이러한 하나의 참조가 아닌 여러 참조 자료형을 사용할 수 있도록하는 것이 제네릭입니다. 제네릭을 사용하는 이점 제네릭은 컴파일 타임에 유효성을 검사하기 때문에 안정성이 높습니다. 런타임이 아닌 컴파일 타임에 체크하기 때문에 프로그램 동작에 영향을 주지 않습니다. 타입변환에 관한 코드를 제거할 수 있습니다. Generic 대신 Object로 코드를 작성하게 된다면, 형 변환에 대한 비용이 발생하게 됩니다. 제네릭 클래스를 사용하면 컴파일러는 일.. Language/Java 2021. 4. 21.
[Java] 다형성 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미합니다. 예를 들어 키보드라는 클래스에 누른다라는 동작이 있습니다. 그렇다면 ENTER를 누르는 것과 ESC, SPACE를 누르는 것은 서로 다른 동작을 하게 됩니다. 이러한 동작을 다형성이라고 합니다. 다형성에 대해 가장 많이 언급되는 것이 상속과 Overriding, OverLoading입니다. OverLoading에 대해서는 의견이 분분하다고 많은 책들에서 언급되지만 예시에 포함하도록 하겠습니다. Overloading 같은 이름을 가지지만 매개변수의 개수 또는 타입에 따라 서로 다른 동작 방법을 하는 것을 오버로딩이라고 합니다. public class Printer { public void print(int nu.. Language/Java 2021. 1. 1.
[Java] 실행 데이터 영역 (Runtime Data Area) 자바 실행 데이터 영역 (Runtime Data Area) Runtime Data Area는 JVM 이 프로그램을 수행하기 위해 할당 받는 메모리 영역이라고 할 수 있습니다. 실제 성능 문제에 직면했을 때, 대부분의 문제점은 Runtime Data Area에서 발생 하는 경우가 많습니다. Memory Leak 이나 Garbage Collection 인 경우를 그 예로 볼 수 있습니다 . 이러한 문제가 발생할 때, 이 문제가 왜 발생한 것인지 어디에서 발생한 것인지 확인하는 것은 쉽지 않습니다. 이 경우 Runtime Data Area 아키텍처를 이해한다면 해당 문제를 분석하는데 도움이 될 것입니다. Runtime Data Area는 크게 다섯 가지 영역으로 나뉘게 됩니다 . 그것은 PC Register,.. Language/Java 2020. 12. 27.
[Java] 자바 클래스 로더 자바 클래스 로더 자바 프로그램은 한 개 혹은 그 이상의 클래스들의 조합으로 실행됩니다. 그리고 실행 시 모든 클래스 파일이 한 번에 로딩되지 않고 요청되는 순간 로딩됩니다. 자바의 클래스 로더는 자바의 큰 장점 중 하나로 컴파일타임이 아닌 런타임에 Class를 로딩할 수 있게해주는 기술입니다. 바이트 코드를 읽어 들여 class 객체를 생성하는 역할을 담당합니다. 즉, 클래스 로더는 클래스가 요청될 때 파일로부터 읽어 메모리로 로딩하는 역할을 하며 자바 가상 머신의 중요한 요소 중 하나입니다. 자바 런타임 환경(JRE)의 일부입니다. 클래스 로더는 Loading, Linking, Intialize의 순서로 진행됩니다. 로딩( Loading ) 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절.. Language/Java 2020. 12. 26.
[Java] 자바란? ( Java ) 자바란? ( Java ) 운영체제에 독립적 Java로 작성된 애플리케이션은 JVM이라는 가상의 기계에서 동작하기 때문에, Java는 운영체제와 하드웨어에 독립적입니다. 따라서 한번 작성하면 어디에서나 실행이 가능합니다. Write Once, Run anyWhere 하지만 Java 애플리케이션이 동작하는 JVM은 각 OS마다 다른 JVM이 존재하기 때문에 운영체제에 종속적입니다. JVM을 한단계 더 거치고, 하드웨어에 맞게 컴파일 된 상태가 아니기 때문에 해석(Interpret) 과정을 거치기 때문에 속도가 느리다는 단점이 있습니다. 하지만 JIT 컴파일러와 향상된 기술로 속도의 격차가 많이 줄어들었습니다. 객체지향 Java는 상속, 추상화, 다형성, 캡슐화의 특징을 가진 객체 지향 언어( Object-O.. Language/Java 2020. 12. 25.
[Java] JVM Architecture 동작원리 Java의 동작 원리를 알기 위해서는 JDK,JRE,JVM을 알아야 합니다. JDK ( Java Development Tool) Java 응용 프로그램 개발 및 실행에 사용되는 완전한 개발 환경. JRE 및 개발 도구가 모두 포함되어 있습니다. JRE ( Java Runtime Environment ) Java 애플리케이션을 실행하는 데 필요한 JVM (Java Virtual Machine) 및 자바 클래스 라이브러리(Java Class Libraries)와 자바 클래스 로더(Java Class Loader)가 포함됩니다. JVM ( Java Virtual Machine ) Java를 실제로 실행시키는 도구이다. 자바 어플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행한다. 그.. Language/Java 2020. 6. 7.