[TIL] 2021.11.04

지금까지 AWS를 마치고 스프링을 배우기 시작하였다. 아직 AWS를 마무리하지 못했지만 조금씩 마무리하고 정리하고자 한다. 오늘부터 TIL의 내용과 작성원칙을 바꿔 수업내용을 TIL을 통해 정리하기로 하였다.

필요 프로그램 설치

필요 프로그램으로 3가지가 있었다.

  • Intellij IDEA Ultimate
  • JAVA
  • Advanced REST Client

Intellij

인텔리제이는 JetBrain 회사에서 만든 자바 개발 플랫폼이다. IDE 라고 한다. 젯브레인에 대한 회사는 블로터에 잘 정리된 내용이 있어 다음 기사를 확인하도록 한다.

바로가기 :: [IT열쇳말] 젯브레인

보통 인텔리제이를 설치하기 위해서 인텔리제이를 standalone 형태로 설치하지만 필자는 ToolBox 라는 툴을 이용해서 설치하는 것을 좋아한다.ToolBox는 다음 링크를 통해서 설치할 수 있다.

바로가기 :: JetBrains Toolbox App: Manage Your Tools with Ease

툴박스를 설치하면 위의 화면처럼 JetBrain 회사에서 만든 여러가지 플랫폼을 관리할 수 있으며 간단하게 IDE의 세부정로를 설정할 수 있다.

JDK

자바는 간단하며 객체지향을 지향하는 프로그래밍 언어이다. 자바는 SUN사에서 개발되었지만 오라클로 자바가 넘어가면서 JDK 9 버전부터 유료화가 되었다.(정확하게 말하면 상업용으로 사용했을 때 전에는 묵인하는 분위기 였지만 지금은 라이센스 비용을 요구할 수 있다.) 그래서 실습할 때에는 azul 사의 OpenJDK를 사용하였다. 설치과정은 아래와 같다.

  1. 아래 사이트를 통하여 자신에게 맞는 플랫폼과 JDK 버전을 설치한다.

    바로가기 :: Java Download | Java 8, Java 11, Java 13 - Linux, Windows & macOS

  2. 자바가 설치되었는지 확인한다.

$ javac -version
javac 1.8.0_312
  1. 추가적으로 자바의 설치경로는 아래와 같다.
  • JDK를 일반적인 방법으로 설치했을 경우 : /Library/Java/JavaVirtualMachines/zulu-8.jdk
  • Intellij 에서 설치했을 경우 : /Users/seonmankim/Library/Java/JavaVirtualMachines/azul-1.8.0_312/Contents/Home/bin

Advanced REST Client

아직 사용을 해보지 않아 어떤 프로그램인지 잘 모르겠지만 이름과 실행해본 화면으로는 Postman 과 같은 기능일 듯 하다. 차이점은 수업 후반부에 사용해보고 물어봐야 하겠다.

바로가기 :: Advanced REST Client

자바

자바 vs 파이썬

수업자료 중에 프로그래밍순위에 대한 내용이 있어서 공유 드립니다.

바로가기 :: java, python - 탐색 - Google 트렌드

내용을 보면 자바 공화국이라는 이름을 가지고 있는 대한민국에서도 파이썬의 검색 비중이 높아진 것을 확인할 수 있다.(단순히 검색횟수로 자바와 파이썬중 어느 언어가 더 많이 사용하는지는 판단하지 못한다.) 머신러닝과 통계를 파이썬이 많이 지원해주기 때문에 점유율이 높아졌지만 개인적으로 자바를 좋아하는 필자는 슬프기만 할 뿐이다.. 참고로 파이썬이 자바를 앞뒤른 적은 꽤 시간이 흘렸다.

자바의 특징

  • 단순한

    • 당시 C/C++언어를 사용하는 프로그래머를 흡수하기 위하여 일부로 객체지향언어인 C++과 비슷하게 자바를 만들었다.
    • C++의 혼란스런 기능인 연산자 오버로딩과 다중상속, 광범위한 자동 강제 변환을 제외했다.
    • JVM을 통하여 자동 가비지 잡업을 통하여 메모리 관리를 하면서 프로그래밍 작업에 집중할 수 있도록 만들었다.
    • 클래스 파일의 사이즈를 대폭 낮추었다.
  • 객체지향

    • 객체지향은 데이터와 인터페이스에 중점을 둔 기술이며 플러그 앤 플레이 방식을 정의한다.
  • 분산

    • HTTP 및 FTP 프로토콜을 이용하여 기존 프로그래머가 로컬시스템을 사용하는 것과 동일한 방식으로 URL을 통해 인터넷 객체를 활용할 수 있다.
  • 건장한

    • C/C++과 다르게 메모리 덮어쓰기 및 데이터 손상 가능성을 제거하였다.
  • 안전한

    • 네트워크/분산 환경에서 RSA 방식의 암호화를 지원하여 데이트를 교환한다.
  • 아키텍처 중립

    • 다양한 CPU및 운영체제의 아키텍처를 가진 다양한 시스템에서 작동한다.
    • 컴파일러는 운영체제와 중립적인 코드인 바이트코드를 생성하여 JVM에서 실행된다.
  • 가지고 다닐 수 있는

    • 자바는 POSIX를 구현하여 여러 운영체제에서 실행가능하도록 구현되었다.
    • POSIX : 이식 가능 운영 체제 인터페이스(移植可能運營體制 interface, portable operating system interface)의 약자로, 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 규격
  • 해석

    • JVM이 이식된 모든 시스템에 Java 바이트코드를 빠르게 실행할 수 있으며 디버깅을 하기 쉽게 만듭니다.
  • 고성능

    • 바이트코드는 기계어를 염두하여 생성되었기 때문에 합리적으로 좋은 코드가 생성되며 컴파일러가 컴파일 최적화 작업을 수행합니다.
  • 다중 스레드

    • 동시에 여러가지 일을 하는 작업을 작성할 수 있습니다. 다만, 단일쓰레드 작업보다 코딩하기는 어렵다.
  • 동적

    • 컴파일을 한 후 일부 클래스의 정보가 바뀌더라도 전부 소스가 컴파일 되지 않는 문제가 발생하지 않는다.
    • 동적으로 데이터 타입을 확인하고 조회함으로써 동적으로 데이터를 변경하고 처리할 수 있다.

바로가기 :: The Java Language: A White Paper

객체지향이란?

객체지향은 영어로 Object-oriented Programing 이며, 컴퓨터 프로그래밍의 여러 패러다임중 하나이다. 객체지향은 프로그래밍하는 과정의 서로 독립된 여러 모듈을 객체로 보는 것이며 각각의 객체는 메세지를 주고받고 데이터를 처리한다.

자바에서 메세지는 메소드로 처리하며 데이터는 객체변수로 처리한다.

특징으로는 다음과 같다.

  • 자료 추상화 : 불필요한 정보는 숨기며 중요한 정보만을 표현하는 방식으로 캡슐화를 통하여 데이터를 은닉함으로 추상화를 구현한다.
  • 상속 : 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있는 기능이다. 종속관계를 형성함으로 코드가 중복되는 것을 방지할 수 있다.
  • 다형성 : 한 객체에 여려 개념을 넣은 것으로 상황에 따라 하나의 객체에서 서로 다른 행위를 표현할 수 있다.

프로젝트 생성하기

Gradle vs Maven

아직 Maven 이나 Gradle을 사용만 하고 문법을 정확하게 공부하지 않아 글을 찾아보았지만 잘 이해가 되지 않는다.
차이점은 Gradle 이 더 좋다고 한다. 아래는 차이점이다.

  • Maven의 XML 방식은 특정 속성을 특정부분에 적용하려면 상속 과정을 거쳐고 의존관계가 복잡해진다.
  • Maven의 XML 방식은 Build 과정을 정의하기에 부적합하기 때문에 코드의 양이 길어지고 가독성이 떨어진다.
  • Gralde은 설정주입방식을 사용하기 때문에 공통모듈을 상속받기가 간단하다.
  • Gralde은 조건에 따라 같은 프로젝트라도 동적으로 라이브러리를 설정할 수 있다.
  • 무엇보다 Gradle 이 빠르다.

아직 정확하게 이해하지 못하지만 간단하게 정리하고 넘어간다.

WAR vs Jar

  • war : Web Application Archive

    • 웹 서비스가 돌아가기 위한 파일포맷으로 HTML/css 등이 포함
    • 소스에 독자적으로 실행할 수 있는 포맷이 없어 단독으로 실행 불가
  • jar : Java Archive

    • 자바가 돌아가기 위한 파일 포맷으로 클래스와 모듈정보, 리소스 정보가 포함
    • 소스에 독자적으로 실행할 수 있는 포맷이 존재하여 실행 가능

참고

좋은 웹페이지 즐겨찾기