자바 18 [Java] 객체 지향 언어 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍의 패러다임 중 하나로 객체의 관점으로 프로그램을 설계하는 방법입니다. 작은 문제들을 해결할 수 있는 객체들을 만든 뒤, 이 객체들을 조합해서 큰 문제를 해결하는 상향식(Bottom-Up) 해결법을 도입했습니다. 이 객체란 것을 일단 한번 독립성/신뢰성이 높게 만들어 놓기만 하면 그 이후에 그 객체를 수정 없이 재사용할 수 있으므로 개발 기간과 비용이 대폭 줄어들게 됩니다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소포트웨어 개발에 많이 사용됩니다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 직관적인 코드 분석을 가능하게 하는 장점을 갖.. Language/Java 2021. 9. 29. [Spring] Bean ( Spring Bean ) Bean Spring에서는 Container를 이용해 객체들을 관리합니다. 이때 Container가 관리하는 자바 객체를 Bean이라고 부릅니다. 흔히 알고 있는 new를 통해 생성된 객체는 Bean이라고 할 수 없습니다. Bean은 getBean()을 통해 얻어질 수 있는 것을 Bean이라고 합니다. Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미합니다. Spring에서 Bean을 등록하는 방법은 ComponentScan 방법과, Configuration에서 직접 등록하는 방법이 존재합니다. 스프링은 기본적으로 모든 Bean을 Singleton으로 생성하여 관리합니다. Bean은 다양한 Scope를.. Domain/Spring 2021. 7. 23. [Spring] 스프링이란? (Spring / Spring Boot / Spring Framework ) 스프링에 대해 가장 잘 알려진 정의는 '자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크'입니다. 애플리케이션 프레임워크는 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말합니다. 애플리케이션 프레임워크는 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는 데 일차적인 목표를 두는 프레임워크입니다. 엔터프라이즈 개발을 편하게 하려는 이유는 원래 엔터프라이즈 개발이란 편하지 않기 때문입니다. 자바 엔터프라이즈 시스템 개발이 어려운(편하지 않은) 가장 큰 이유는 근본적인 비즈니스 로직과 엔터프라이즈 기술이라는 두 가지 복잡함이 얽혀 있기 때문입니다. 침투적 vs 비침투적 침투적인(invasive) 기술 : .. Domain/Spring 2021. 7. 13. [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. 이전 1 2 다음