Java는 처음 개발을 하려는 사람, 백엔드/모바일 앱/ 웹 개발자를 목표로 둔 사람 등 많은 분들이 사용하면 좋다 생각합니다. 광범위한 용도/ 안정성과 많은 커뮤니티 글로 학습 도중, 인터넷 검색을통해 많은 정보를 얻을 수 있습니다.
Java를 처음 배우시는 분, Java를 공부하고 있지만 아직 기초가 덜 된 것 같다 하시는 분들을 위해
저도 함께 공부하며 Java에 대해서 전반적으로 포스팅하려합니다.
Java는 높은 점유율을 자랑하는 프로그래밍 언어 중 하나입니다.
24년 TIOBE Index에 따르면 Java는 4위를 차지했습니다.
Java는 폭 넓은 사용성과 오랜 기간동안 발전해온 기술로 안정성/신뢰성으로 높은 순위권을 차지하지만
경쟁 언어의 강화 및 빅데이터 기술의 발전으로 요 최근의 순위는 계속 떨어지고 있습니다.
순위가 높은 언어라하여 최적의 선택이라할 수는 없습니다.
TIOBE Index란?
티오베는 네덜란드 소프트웨어 기업이며,
매월 정기적으로 다양한 소스를 활용하여 지수를 산출하는 프로그래밍 언어 순위입니다.
특정 프로그래밍 언어의 인기도를 파악하는 데 유용하며, 언어 선택이나 트렌드 분석에 참고하시기 바랍니다.
TIOBE Index는 아래와 같은 방식으로 프로그래밍 언어 순위를 설정합니다.
1. 검색 엔진 데이터 분석
: 여러 검색 엔진에서 사용언어+프로그래밍 또는 언어+튜토리얼 같은 키워드를 검색한 결과
2. 실제 사용 사례
: 실제로 비즈니스/학계/산업 분야에서 어떤 언어가 사용되는지
3. 추세 분석
: 상대적 사용성에 대한 추세 분석 및 순위 설정
1. Java란?
Java는 객체 지향 프로그래밍 언어입니다.
1995년 썬 마이크로시스템즈( 현 오라클 )에서 개발한 언어입니다.
처음엔 직원들이 가전 제품에 내장된 소프트웨어를 개발하는 데 사용하기 위해 만들어졌으나 이후 웹 발전에 의해 인터넷을 위한 언어로 확장이 이루어졌습니다.
웹 발전으로 인해 환경 변화가 필요했는데, 그 당시 언어 특징은 특정 플랫폼에서만 동작하는 것이 일반적이였습니다.
C/C++의 경우 각각 운영체제/하드웨어 아키텍처에 종속적이여서 window에서 작성되었다면 window에서만 실행할 수 있었습니다.
이때 Java는 Write Once, Run Anywhere
한 번 작성하면 모든 곳에서 실행될 수 있다는 표어를 만들었습니다.
1990년대 초반 당시 개발 비용 절감, 빠른 배포로 인한 비즈니스 이점으로 굉장히 혁신적이고 오늘날까지 널리 사용되는 이유입니다.
2. Java의 주요 특징
- 플랫폼 독립성
- Bytecode (Java 컴파일러가 소스 코드 컴파일한 결과)로 컴파일되어 JVM에서 실행
- 특정 운영체제, 하드웨어에 종속되지 않고 어디서나 실행 가능 - 객체 지향 프로그래밍 지원
- 클래스, 객체를 사용하여 데이터, 기능을 캡슐화
- 상속을 통해 코드 재사용성 ↑
- 이것으로 유지보수성 향상 및 프로그램 구조 모듈화 가능 - 멀티 스레딩
- 여러 작업 동시에 수행 가능
- 스레드 동기화 관련 기능 제공
- 성능 향상, 반응성 ↑ - 가비지 컬렉터
- 자동으로 메모리 관리가되며 가비지 컬렉션을 통해 더 이상 필요하지 않은 객체는 자동으로 제거
- 메모리 누수 방지 - 강력 라이브러리 지원
- 다양한 라이브러리, 프레임 워크 제공
- 네트워킹, DB연동, GUI 개발, 보안 ,XML 등 다양한 기능 제공 - 보안
- 샌드 박스 환경에서 실행되어 애플리케이션 실행 환경 제한, 악의적 코드 실행 방지
- 암호화 관련 기능 제공
모듈
- 특정 기능이나 목적을 수행하는 독립적인 단위
모듈화
- 프로그램을 모듈로 나누는 과정, 작은 부분으로 분해 / 독립적으로 개발, 관리
- 모듈화로 이해 복잡성을 줄이고 재사용/유지보수성 향상
샌드 박스
- 프로그램 실행되는 환경 제한하는 기술
- 네트워크 엑세스 제한 / 로컬 시스템 자원 엑세스 제한 / 스레드 제한
가비지 컬렉션 동작
1. 객체 생성 : 프로그램 실행 시 새로운 객체가 동적으로 heap 메모리에 할당
2. 객체 참조 : 다른 객체 및 변수에 참조 시 메모리에서 제거되지 않으며, 모든 참조가 사라지면 사용하지 않는 것으로 간주
3. 가비지 컬렉션 실행 : 주기적으로 실행되어 더이상 사용되지 않는 객체 식별
4. 메모리 회수 : 식별된 객체는 메모리 해제, 불필요한 메모리 사용 최소화
3.Java의 용도와 활용 분야
- 엔터프라이즈 애플리케이션 개발
- 주로 큰 규모의 기업/기관에서 사용되며 복잡한 기능/ 프로세스 자동화/ 대량 데이터 등 사용 - 모바일 애플리케이션 개발
- 안드로이드 스튜디오(IDE)와 함께 사용되며 개발 - 웹 개발
- 서버 웹 개발을 위해 주로 Spring Framework / JavaServerFaces(JSF) 를 이용해 동적, 확장 가능한 기능을 개발 - 빅데이터 처리
- Apache Hadoop ( 대규모 데이터 세트를 분산 저장, 처리하는데 사용되는 오픈소스 )
- Apache Spark (대규모 데이터 처리 위한 빠르고 일반화된 데이터 처리 엔진)
위와 같은 시스템, 라이브러리를 사용하여 대규모 데이터 처리 - 게임 개발
- 2D/3D 게임 개발 시 사용
- JavaFX와 같은 라이브러리 사용하여 그래픽 구현
4. Java의 장단점
- 장점
- 플랫폼 독립성
- 객체지향 프로그래밍
- 다양한 라이브러리
- 메모리 관리 및 가비지 컬렉션
-보안 - 단점
- 성능 : 하드웨어와 밀접한 접촉이 필요할 때 성능 저하가 있을 수 있다.
- 메모리 사용량 : 일반적으로 많은 메모리를 소비하며 가비지 컬렉션에 의해 일시적으로 실행이 중단될 수 있다.
처음은 간단히 자바의 특징, 활동 분야, 장단점에 대해 알아보았습니다.
다음 게시물부터는 예제 코드와 함께 기본 자바 코드를 리뷰하도록 하겠습니다.
'개발 *´꒳`* > Java' 카테고리의 다른 글
[Java] List와 Map의 구조와 스레드 안전성 (0) | 2024.08.08 |
---|---|
[Java] 3.연산자의 종류 (0) | 2024.05.31 |
[Java] 2. 프로그래밍 기초 및 변수 (0) | 2024.05.26 |