본문 바로가기
IT개발/JAVA

자바 백엔드 개발 공부 흐름 요약(Java/backend/programing)

by 시간기억자 2024. 11. 17.
반응형

 

대주제 기본 설명 왜 배우는지 장점 단점 특징
Java 객체지향 프로그래밍 언어로, 다양한 플랫폼에서 실행 가능한 애플리케이션 개발에 사용됨. 서버 측 로직을 구현하고 플랫폼 독립적인 애플리케이션을 개발하기 위해. 강력한 커뮤니티 및 라이브러리 지원, OOP 원칙 적용으로 코드 재사용성 높음. 구문이 상대적으로 verbose함, 성능이 C/C++보다 낮을 수 있음. 객체지향 프로그래밍 언어, 다양한 플랫폼에서 실행 가능.
OOP 코드의 재사용성과 유지보수성을 높이기 위해 객체 중심으로 설계된 프로그래밍 패러다임. 복잡성을 줄이고, 실제 세계를 모델링하여 소프트웨어를 개발하기 위해. 코드의 구조화 및 이해 용이, 상속과 다형성으로 코드 재사용 가능. 초기 설계가 복잡할 수 있음, 학습 곡선이 존재함. 클래스와 객체 중심, 상속, 다형성, 캡슐화 등의 원칙 포함.
GUI (Swing) Java에서 데스크탑 애플리케이션의 GUI를 구현하기 위한 라이브러리. 사용자와의 상호작용을 개선하여 더 나은 사용자 경험을 제공하기 위해. 다양한 UI 컴포넌트 제공, 플랫폼 독립적 GUI 구현 가능. 성능이 다른 UI 프레임워크에 비해 떨어질 수 있음, 복잡한 UI 구현 시 귀찮을 수 있음. 이벤트 기반 프로그래밍, Java 내장 라이브러리로 사용 용이.
입출력 파일 및 데이터 스트림을 통해 데이터의 읽기 및 쓰기를 처리하는 기능. 외부 데이터와의 상호작용을 구현하고 데이터 처리를 용이하게 하기 위해. 다양한 데이터 소스와의 통합 가능, 데이터 처리의 유연성 제공. 복잡한 예외 처리가 필요할 수 있음, 성능 이슈가 발생할 수 있음. 스트림 기반 처리, 다양한 형식의 데이터 지원 (파일, 네트워크 등).
네트워크 클라이언트-서버 간의 데이터 통신을 위한 소켓 프로그래밍을 통해 분산 시스템 구축. 분산 시스템을 구축하고 데이터 통신을 처리하기 위해. 분산 시스템 구축 용이, 다양한 프로토콜 지원. 네트워크 관련 문제 발생 시 디버깅이 어려울 수 있음, 보안 이슈가 존재할 수 있음. TCP/IP 소켓 프로그래밍 사용, HTTP와 같은 다양한 프로토콜 이해 필요.
데이터베이스(DBMS) 데이터의 영구 저장, 검색, 수정, 삭제 기능을 제공하는 시스템. 대규모 데이터베이스 시스템을 구축하고 관리하기 위해. 고성능 데이터 처리, 데이터 보안 및 백업 관리 기능 제공. 라이센스 비용이 높을 수 있음, 복잡한 설정 및 관리 필요. PL/SQL 지원, 대규모 데이터 처리에 최적화된 시스템.
JDBC Java와 데이터베이스 간의 연결을 위한 API로, SQL 쿼리 실행 및 결과 처리. Java 애플리케이션에서 데이터베이스와의 상호작용을 구현하기 위해. 데이터베이스 연동 간편화, JDBC API를 통해 다양한 DB 지원. 코드가 복잡해질 수 있음, JDBC를 통한 직접적인 SQL 쿼리 작성 필요. Java 기반의 데이터베이스 접근 API, 트랜잭션 처리 및 연결 관리 기능 포함.
CSL 웹 콘텐츠의 구조를 정의하는 마크업 언어. 웹 페이지를 구성하고 콘텐츠의 의미를 전달하기 위해. 시맨틱 웹 구현을 위한 태그 사용, 다양한 콘텐츠 구조화 가능. 태그 사용에 대한 이해가 필요, 복잡한 구조를 구현하기 어려울 수 있음. HTML, CSS, JavaScript 등 다양한 기술과 함께 사용.
Servlet 서버 측에서 HTTP 요청을 처리하고 응답을 생성하는 Java 클래스. 웹 애플리케이션의 핵심 구성 요소로 요청과 응답 처리를 위해. 웹 애플리케이션의 기본 아키텍처 구현, 상태 유지를 위한 세션 관리 가능. 복잡한 비즈니스 로직을 처리하기 어려울 수 있음, 많은 코드 작성 필요. 서버 측 프로그래밍 모델, 요청과 응답을 처리하는 클래스.
JSP Java Server Pages로, 동적인 웹 페이지를 생성하는 기술. 서버 측에서 HTML을 생성하여 사용자에게 콘텐츠를 제공하기 위해. HTML과 Java 통합 가능, MVC 패턴에서 View 역할 수행. 스크립틀릿 사용 시 코드가 복잡해질 수 있음, 성능 이슈가 발생할 수 있음. 서버 측에서 HTML 생성, JSP 태그 및 EL 사용.
AJAX 비동기식 웹 요청을 처리하여 사용자 경험을 향상시키는 기술. 페이지 새로 고침 없이 데이터를 전송하여 인터랙티브한 웹 애플리케이션 구현을 위해. 사용자 경험 향상, 서버와 클라이언트 간의 빠른 데이터 전송. 복잡한 오류 처리 필요, 브라우저 호환성 문제 발생할 수 있음. 비동기 통신을 위한 기술, 클라이언트와 서버 간의 빠른 데이터 전송.
XML 데이터 구조를 정의하고 전송하는 마크업 언어. 다양한 시스템 간의 데이터 교환을 원활하게 하기 위해. 데이터의 구조화 및 가독성 향상, 다양한 시스템에서 사용 가능. 파싱 과정이 복잡할 수 있음, JSON에 비해 데이터 크기가 클 수 있음. 마크업 언어로 데이터 표현, 다양한 응용 프로그램에서 사용 가능.
JSON 데이터 전송을 위한 경량 포맷으로, JavaScript와의 호환성을 높이는 형식. API 통신에서 표준 형식으로 많이 사용되기 위해. 데이터 구조가 간결하고 가독성이 좋음, 다양한 플랫폼에서 사용 가능. 데이터 타입에 대한 타입 검사가 없음, 보안 이슈 발생 가능성. 경량 데이터 형식, API 통신에서 많이 사용됨.
MyBatis SQL 쿼리와 Java 객체 간의 매핑을 단순화하여 데이터 접근을 용이하게 하는 프레임워크. SQL과 객체 간의 매핑을 간편하게 하기 위해. SQL 쿼리 작성의 유연성 제공, XML 또는 어노테이션 기반의 설정 가능. SQL 쿼리 작성이 필요하여 생산성이 낮을 수 있음, 복잡한 쿼리의 재사용성이 떨어질 수 있음. SQL 중심의 ORM, 유연한 SQL 쿼리 작성 가능.
Spring Framework 의존성 주입 및 AOP 기능을 제공하여 애플리케이션 구조를 유연하게 만드는 프레임워크. 모듈화 및 테스트 용이성 향상을 위해. 강력한 DI(Dependency Injection) 지원, AOP 기능 포함. 학습 곡선이 존재할 수 있음, 설정이 복잡할 수 있음. 다양한 통합 기능 제공, 대규모 애플리케이션 개발에 적합.
Spring Mybatis MyBatis와 Spring을 통합하여 데이터 접근을 용이하게 하는 라이브러리. 데이터베이스 접근 로직을 간소화하고, Spring의 의존성 주입 및 트랜잭션 관리 기능을 활용하기 위해. SQL과 객체 간의 매핑을 간편하게 하고, Spring의 DI 및 트랜잭션 관리 통합. MyBatis의 SQL 쿼리 작성이 필요하므로, 복잡한 쿼리의 경우 유지보수가 어려울 수 있음. XML 또는 어노테이션 기반의 설정 가능, Spring과의 밀접한 통합으로 개발 생산성 향상.
Spring Security 애플리케이션 보안을 위한 프레임워크로, 인증 및 권한 부여 기능을 제공. 웹 애플리케이션의 보안을 강화하고 사용자 인증을 관리하기 위해. 강력한 보안 기능 제공, 인증 및 권한 부여의 표준화, 다양한 인증 방식 지원. 설정이 복잡할 수 있으며, 보안 관련 설정 오류 발생 시 치명적인 문제를 일으킬 수 있음. Spring 생태계와의 통합이 용이, 필터 체인을 통한 유연한 보안 관리.
Spring Boot 빠른 개발을 위한 Spring 기반의 프레임워크로, 설정을 최소화하고 내장 서버를 제공. 애플리케이션의 빠른 배포 및 관리 용이성을 위해. 개발 생산성 향상, 자동 구성 기능 지원. 기본 설정이 복잡할 수 있음, 모든 프로젝트에 적합하지 않을 수 있음. 설정 최소화 및 내장 서버 제공, Spring 생태계와의 호환성 높음.
JPA Java Persistence API로, Java 애플리케이션에서 데이터베이스와의 상호작용을 위한 표준 API. 객체-관계 매핑을 통해 데이터베이스와의 상호작용을 간편하게 하기 위해. ORM 지원, 데이터베이스 독립성 제공, 엔티티 관리 및 트랜잭션 처리 지원. JPA 구현체(Hibernate 등)에 의존, 복잡한 쿼리 처리 시 성능 저하 발생 가능. 객체 모델과 데이터베이스 모델 간의 매핑을 지원, JPQL을 통한 객체 지향 쿼리 작성 가능.
Hibernate JPA의 구현체로, ORM 프레임워크로 데이터베이스와의 상호작용을 간소화하고 성능을 최적화. 데이터베이스 접근을 단순화하고 성능을 최적화하기 위해. 자동 생성 및 관리되는 SQL 쿼리, 캐시 및 배치 처리 등 성능 최적화 기능 제공. 설정이 복잡할 수 있고, 잘못된 설정 시 성능 저하가 발생할 수 있음. 객체-관계 매핑에 강력한 지원, 다양한 데이터베이스와의 호환성.
ORM 객체-관계 매핑으로, 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터 간의 변환을 자동으로 처리하는 기술. 데이터베이스와 애플리케이션 간의 불일치를 줄이고, SQL 쿼리 작성 없이 데이터베이스 작업을 가능하게 하기 위해. 코드 작성의 간소화, 데이터베이스 독립성 제공, 유지보수 용이성 향상. 복잡한 객체 모델을 간단히 표현하기 어려울 수 있음, 성능 이슈 발생 가능성. 다양한 ORM 프레임워크(JPA, Hibernate 등)와 함께 사용됨, 객체 중심의 데이터 접근.
Gradle Java 및 다른 언어의 프로젝트를 관리하고 빌드하는 자동화 도구로, 의존성 관리 및 빌드 프로세스를 개선. 복잡한 빌드 프로세스를 단순화하고, 의존성 관리를 용이하게 하기 위해. 선언적 방식의 빌드 스크립트, 동적 의존성 해결 및 멀티 프로젝트 빌드 지원. 초기 설정이 복잡할 수 있음, Gradle DSL에 대한 이해가 필요. 빌드 자동화 도구로, Maven과의 호환성 및 다양한 플러그인 지원.
반응형

댓글