반응형
Java는 1995년에 Sun Microsystems에서 개발된 객체 지향 프로그래밍 언어입니다. 현재는 오라클(Oracle)이 Sun Microsystems를 인수함에 따라 Java의 소유권이 오라클에 있습니다. Java는 다양한 플랫폼에서 실행될 수 있는 "Write Once, Run Anywhere"(한 번 작성하면 어디서든 실행 가능)이라는 철학으로 널리 알려져 있으며, 이는 Java의 가장 큰 특징 중 하나입니다.
개념
- 객체 지향 프로그래밍(OOP): Java는 클래스와 객체를 기반으로 하는 객체 지향 언어입니다. 캡슐화, 상속, 다형성 같은 객체 지향의 주요 원칙을 지원합니다.
- 플랫폼 독립성: Java는 자바 가상 머신(Java Virtual Machine, JVM) 위에서 실행되므로, JVM이 설치된 모든 운영체제에서 실행될 수 있습니다.
- 자동 메모리 관리: 가비지 컬렉션(Garbage Collection)을 사용하여 프로그래머가 직접 메모리를 관리할 필요가 없습니다. 이는 메모리 누수를 방지하고 프로그램의 안정성을 높입니다.
특징
- 간결성과 안정성: Java는 읽기 쉽고 이해하기 쉬운 문법을 가지고 있으며, 강력한 타입 체크를 통해 프로그램의 안정성을 높입니다.
- 멀티스레드 지원: Java는 내장된 멀티스레딩 기능을 제공하여 동시성과 병렬 처리를 쉽게 구현할 수 있습니다.
더보기
멀티스레드: 컴퓨터 프로그램이 동시에 여러 작업을 수행할 수 있도록 하는 기술
스레드: 프로그램 내에서 실행되는 독립적인 실행 흐름
-> 이러한 스레드를 여러 개 생성하여 여러 작업을 수행하도록 하는 것
- 풍부한 표준 라이브러리: Java는 광범위한 표준 라이브러리를 제공하여, 네트워킹, 파일 입출력, 데이터베이스 연결 등 다양한 기능을 쉽게 구현할 수 있습니다.
- 보안: Java는 샌드박스 모델을 사용하여 애플리케이션의 실행 환경을 제한하고, 보안 관리자와 접근 제어를 통해 보안을 강화합니다.
- 포터블: Java 애플리케이션은 다양한 운영체제에서 변경 없이 실행될 수 있습니다. 이는 Java가 운영 체제에 의존적이지 않은 바이트 코드로 컴파일되기 때문입니다.
장점
- 플랫폼 독립성: Java는 "Write Once, Run Anywhere" 원칙에 따라 개발된 애플리케이션으로 다양한 플랫폼에서 변경 없이 실행될 수 있습니다. 이는 JVM 덕분에 가능합니다.
- 객체 지향 프로그래밍(OOP): Java는 순수한 객체 지향 언어로, 캡슐화, 상속, 다형성 등 OOP의 주요 개념을 완벽히 지원합니다. 이는 코드의 재사용성, 유지 보수성을 향상시킵니다.
더보기
OOP: 현실 세계를 프로그래밍으로 옮겨와 현실 세계의 사물을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍하는 기법
- 강력한 표준 라이브러리: Java는 네트워킹, 데이터베이스 연결, XML 파싱, 멀티스레딩 등 다양한 작업을 위한 방대한 표준 라이브러리를 제공합니다.
- 멀티스레드 지원: Java는 내장된 멀티스레딩 기능을 제공하여, 동시성과 병렬 처리를 효율적으로 구현할 수 있습니다.
- 자동 메모리 관리: 가비지 컬렉션을 통한 자동 메모리 관리로 메모리 누수 문제를 최소화하며, 개발자가 메모리 관리에 신경 쓸 필요가 줄어듭니다.
- 높은 보안: Java는 샌드박스 보안 모델을 사용하며, 애플리케이션의 실행 환경을 제한하여 보안을 강화합니다.
단점
- 성능 문제: Java 애플리케이션은 JVM 위에서 실행되기 때문에, 컴파일 언어에 비해 실행 속도가 느릴 수 있습니다. 특히, 고성능이 요구되는 시스템에서는 이러한 성능 차이가 문제가 될 수 있습니다.
- 메모리 소비: 가비지 컬렉션과 객체 지향 프로그래밍의 특성상 Java 애플리케이션은 상대적으로 많은 메모리를 소비할 수 있습니다.
- 복잡한 UI 디자인: Java로 복잡하고 세련된 사용자 인터페이스(UI)를 디자인하는 것은 다소 어려울 수 있으며, 이를 위해 추가적인 도구나 라이브러리가 필요할 수 있습니다.
- 가비지 컬렉션의 한계: 자동 메모리 관리는 편리하지만, 가비지 컬렉션이 예측할 수 없는 시점에 실행되면서 애플리케이션의 성능에 영향을 줄 수 있습니다.
- 보일러플레이트 코드: Java는 타입 안정성을 위해 상대적으로 많은 코드를 요구하는 경향이 있으며, 이는 때때로 개발 과정을 더디게 만들 수 있습니다.
면접 대비
- 자바와 자바스크립트의 차이는 무엇인가요?
- 자바는 객체 지향 프로그래밍 언어로, 서버 측 응용 프로그램 개발이나 안드로이드 애플리케이션 개발 등에 주로 사용됩니다. 자바스크립트는 웹 페이지의 동적인 요소를 다루기 위한 스크립트 언어로, 주로 클라이언트 측 웹 개발에 사용됩니다.
- 자바의 메모리 구조는 어떻게 되나요?
- 자바의 메모리 구조는 크게 세 영역으로 나뉩니다. 첫 번째로 스택은 메서드 호출과 지역 변수들이 저장되는 영역으로, 스레드마다 별도로 생성됩니다. 두 번째로 힙은 동적으로 할당된 객체들이 저장되는 공간으로, 모든 스레드에서 공유됩니다. 마지막으로 메서드 영역은 클래스 파일과 메서드 코드, 상수 풀 등이 저장되는 영역으로, 모든 스레드에서 공유됩니다.
- 인터페이스와 추상 클래스의 차이는 무엇인가요?
- 인터페이스는 추상 메서드의 집합으로, 모든 메서드는 추상 메서드이며 멤버 변수를 가질 수 없습니다. 인터페이스는 다중 상속이 가능하며, 다른 클래스들에게 특정 동작을 강제할 때 주로 사용됩니다.
- 추상클래스는 하나 이상의 추상 메서드를 가지며, 추상 메서드 외에도 구현된 메서드나 멤버 변수를 가질 수 있습니다. 추상 클래스는 일부 기능을 구현하고 나머지 기능을 하위 클래스에게 위임할 때 주로 사용됩니다.
- 자바 컬렉션 프레임워크에 대해 설명해 주세요.
- 자바 컬렉션 프레임워크는 데이터를 저장, 관리, 처리하기 위한 클래스와 인터페이스의 집합입니다. 주요 인터페이스로는 List, Map, Set이 있으며, 각 인터페이스를 구현한 여러 클래스들이 제공됩니다. 예를 들어 ArrayList, LinkedList는 List 인터페이스를 구현한 클래스들입니다. 이러한 컬렉션 프레임워크는 데이터 구조에 따라 효율적인 검색, 삽입, 삭제 등의 연산을 지원합니다.
- 자바의 예외 처리 방법에 대해 설명해 주세요.
- 자바에서 예외 처리는 try-catch-finally 블록을 사용하여 수행됩니다. try 블록에는 예외가 발생할 가능성이 있는 코드가 포함되며, catch 블록에는 예외를 처리하는 코드가 작성됩니다. finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드를 포함합니다. 또한 throws 코드를 사용하여 메서드가 예외를 던질 수 있음을 나타낼 수 있습니다.
오늘은 Java에 대해서 알아보았습니다.
자바 내용이 포함된 Spring, Boot, Securty, CS 기술 면접에 대한 포스팅도 함께 보시면 좋습니다!
2024.04.18 - [IT] - [스프링 부트] Spring Boot란? (개념, MSA, 클라우드, 스트림)
2024.04.26 - [IT] - [스프링 시큐리티] Spring Security란? (개념, 특징, CSRF, 인증/권한 설정)
2024.04.09 - [IT] - [기술 면접] CS 기술 면접 질문&답변
반응형
'IT' 카테고리의 다른 글
[키클록] KeyCloak란? (개념, 특징, 장단점, OpenID Connect) (0) | 2024.04.05 |
---|---|
[서버] Nginx란? (개념, 특징, 장단점, 면접 대비) (0) | 2024.04.04 |
[NoSQL] MongoDB란? (개념, 특징, 장단점, 면접대비) (1) | 2024.04.02 |
[Spark With Livy] Livy, Spark (개념, 특징, 장단점, 면접 대비) (0) | 2024.04.01 |
[아파치 카프카] Kafka란? (개념, 특징, 장단점, 면접 대비) (0) | 2024.03.29 |