<항해99>2주차 회고록(Spring/J2EE/JVM/객체지향 프로그래밍)[WIL.220522]

박건영(Parkgunyoung)·2022년 5월 22일
0

WIL

목록 보기
2/8
post-thumbnail

벌써 항해99를 시작한지 2주차가 되었다...!
2주차에 들어서면서 내가 선택한 주특기 언어인 JAVA를 이용하여 알고리즘 문제를 풀어보기도하고 자바의 프레임워크인 스프링에 대한 공부를 시작했다!

여기서 잠깐? 스프링이 무었인지에 대해 가볍게 알아보고 넘어가자 ㅎㅎ


Spring 이란??

스프링의 기원은 J2EE(JAVA2 Enterprise Edition)
의 기술서적에 딸린 예제 코드부터 시작을 하였다고 한다.

  • J2EE : 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모안둔 스펙 집합이다. 조금 더 자세한 설명은 Spring에 대한 설명이후 작성하도록 하겠다

로드 존슨은 2003년에[Expert One-On-One J2EE Design and Development] 라는 책을 출간 하였고, 이 책은 자바 엔터프라이즈 개발에 관한 자신의 오랜 경험을 바탕으로 J2EE 애플리케이션 설계와 개발의 모든 영역에 대한 개발 전략을 다루었다.

이 책에서 강조하는 중요한 전략 하나는 "항상 프레임워크 기반으로 접근하라" 이다. 책의 예제 애플리케이션도 프레임워크를 먼저 만들고나서 그 프레임워크를 이용하는 코드를 만드는 방식으로 작성 되어져 있다고 한다.

바로 이 예제에 포함된 프레임워크가 스프링 프레임워크의 기원이다! 이 책에서 자바 엔터프라이즈 개발의 이상적인 프로그래밍 모델로 추구하는 프레임워크를 기반이 스프링의 원시 버전이라 보면 된다고 한다.

이 책의 내용과 예제로 제공된 프레임워크에 매료된 개발자들이, 책의 독자들이 토론하는 출판사 포럼에 모이기 시작했고 그 중 열정적인 개발자들이 책에 나오는 예제 프레임워크가 예제로 두기에는 아깝다는 의견을 내었고 이것을 발전시켜 지속적으로 개발하자고 하였다.

이에 설득당한 책의 저자인 로드 존슨도 참여를 하면서 정식적으로 스프링 프레임워크라는 이름의 오픈소스 프로젝트가 시작돼어 오늘날의 스프링이 탄생하게 되었다.


J2EE

(JAVA 2 Enterprise Edition)

J2EE란 JAVA 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합이다.

J2EE를 만든 것은 Sun Microsystems이고 Sun에서 J2EE 스펙을 시범적으로 구현해두었지만 IBM,BEA, Oracle, HP, Lona 등의 여러 벤더들도 스펙을 구현할 수 있으며 J2EE 호환성을 검증하는 검증기구의 검증을 통과하면 J2EE 호환 제품으로 시장에 출시할 수 있다.

그리고 이러한 벤더들이 J2EE스펙을 개선하는 과정에도 활발히 참여하기 때문에, J2EE는 사실상 Sun의 독점적인 기술이라기보단 JAVA진영으로 불리우는 여러 벤더들과 개발자들이 다 함께 만들어 나가는 기술로 보든 것이 더 정확하다고 한다.

<J2EE의 기본적인 특징>

JAVA로 구현된 기술이기 때문에 JAVA가 갖는 기본적인 특징인 "플랫폼 독립성"을 갖추고 있다. JAVA는 JVM(JAVA Virtual Machine) 이라는 가상 머신을 통해 각 OS에 맞게 바이트 코드로 변환되어 실행되기 때문에 JVM이 탑재된 플랫폼이라면 어떤 플랫폼이라도 동일한 자바 소스코드들 실행시킬 수 있다!

<J2EE의 구성요소>

J2EE는 방대한 범위를 다루는 스펙 집합이므로 대표적인 스펙들을 간단히 소개해보겠다.

Servlet :

클라이언트가 보내는 HTTP 요청을 처리하는 서버측 자바 프로그램이며, Servlet 엔진이 있어야 합니다.

JSP(Java Server Pages):

HTML이나 Java 코드를 써서 사용자에게 정보를 보여 줍니다. JSP가 처음 실행될 때 Servlet 엔진이 이것을 Servlet으로 컴파일시켜서 내부적으로는 Servlet으로 동작합니다.

EJB(Enterprise Java Beans) :

Java에서 제공하는 분산 컴포넌트 기술로 비즈니스 로직이나 데이터, 메시지를 처리할 수 있습니다.

Remote Method Invocation(RMI):

프록시를 써서 원격에 있는 Java 객체의 메소드를 실행시키기 위한기술입니다.

Java Naming DirectoryInterface (JNDI):

자바 기술로 만들어진 객체에 이름을 붙여 찾을 수 있도록 단일한인터페이스를 제공합니다.

Java Database Connector(JDBC):

여러 종류의 데이터베이스 시스템에 접근하는 단일한 인터페이스를 제공합니다. 각각의 데이터베이스에 맞는 JDBC 드라이버가 있어야 합니다.

Java Connector Architecture(JCA):

이기종 플랫폼을 통합할 수 있도록 플랫폼 독립적인 인터페이스를 제공합니다.

Java Message Service (JMS):

여러 가지 메시징 시스템에 대한 플랫폼 독립적인 인터페이스를 제공합니다.

출처: https://gyrfalcon.tistory.com/entry/J2EE [Minsub's Blog]


이렇게 Spring을 시작으로 J2EE까지 알아보았다 ㅎㅎ..

그럼이제 JAVA언어의 핵심 키워드인 객체지향 프로그래밍(OOP: Objected Oriented Programming) 에 대해 알아보자.

객체지향 프로그래밍
(OOP: Objected Oriented Programming)

객체지향 프로그래밍은 우선 큰 프로젝트나 유지보수가 많이 필요할 것 같은 프로젝트에서 절차적 프로그래밍 언어(오래된 언어인 C, 포트란, 코볼)의 한계점을 보완하기 위해 발전된 프로그래밍 방식이다!

객체지향 프로그래밍은 객체를 생성하고 그 객체마다 할 수 있는 기능들과 데이터를 하나로 묶어주어 각각의 객체들이 상호작용하는 방식으로 현실세계와 유사성을 띈다. 또한 생성된 객체는 그자체가 하나의 프로그램으로 다른 프로그램에서 재사용이 가능하고 유지보수 측면에서도 강한 장점을 가지게 된다.

반대로 절차적 프로그래밍은 객체나 클래스 생성 없이 바로 프로그래밍을 하여 프로그램의 흐름을 쉽게 추적 할 수 있다. 그러나 프로젝트의 규모가 커질수록 코드량은 걷잡을 수 없이 많아지고 이 코드들은 유기성이 강하기에 추가,수정이 힘들어진다.

이상으로 객체지향 프로그래밍에 대한 큰 틀에 대해 알아보았고 조금 더 자세한 내용은 이전 TIL 포스팅 링크를 참조하면 좋을 것 같다!
(https://velog.io/@0andwild/항해99TIL.객체지향-프로그래밍과-절차적프로그래밍에-대해-알아보자)


이렇게 2주차가 끝났다...!
TIL이나 WIL을 작성하거나 모르는 내용을 공부하게 될 때 항상 느끼는 거지만 하나를 몰라서 찾아보게 되면 그안에 또 모르는 여러가지의 내용들과 키워드들이 생기고 점점 가지를 쳐가면서 공부를 하게되는 것 같다...!

결론: #@!#$ 어렵다어려워!

profile
쓰러지면어때일어나면그만인걸

0개의 댓글