20년전? 나에게 자바를 한번 해보지 않으련... 이란 질문을 받았을때, 나는 C++을 하겠다고 했다. 하지만, C++은 그 언어적 특성 때문에, 내가 만들고 싶은 Application 개발이 쉽지 않았다. 그러다가 C#으로 전환했고, C#을 통해서 다양한 표현 방법을 실현해볼 수 있었다. 아마도, Java를 선택했다면, 그 느낌을 이어받지 않았을까 생각은 한다.
하지만, 업계 전반을 보면, Java로 Web Application 개발이 대부분이고, Spring 이라는 프레임워크 위에서 Bean 개념의 컴포넌트 기반의 서버 Application이 주로 하지 않았을까 생각하고, 지금 C#으로 이런 저런 자잘한 프로그램을 짜는 것에 만족하고 있다.

그러다가, 갑자기 Micro-Service 라는 아키텍처가 계속 눈에 밟히고, 내가 구현하고 싶은 구현체 부분에서 C-S 기반 개발에 이 Micro-Service 도입에 대한 고민이 늘기 시작했다. 물론 C# 기반으로 linux에서 사용할 수 있는 Mono 라는 프레임워크가 있었는데, 이를 MS에서 .NET Core 라는 타이틀을 붙여 마치 Java 처럼 다양한 플랫폼 위에서 동작할 수 있는 .NET Framework가 생겼다. 실제로 이 프레임워크 하에서 동작하는 다양한 Web Service들이 생겼고, 심지 Docker의 이미지로 다양하게 배포 되고 있다.

하지만, 우리나라에서는 아직 .NET Framework에 대한 신뢰가 많이 부족한 편이다보니, 자연스럽게 Java가 눈에 띄고, 많은 Micro-Service의 레퍼런스(물론 국내에서)가 Java로 되어 있다. 그래서 한번 Java로 구현해보는 것은 어떨까라는 마음에 Java 개발에 대해서 한발씩 걸어보려 한다.

Java 개발 시작점

이 Java로 개발하려보니, Java로 할 수 있는 일들이 어마무시하게 늘어났다. 오라클에서 꿀꺽할 때까지 Java는 무한동력을 품은 녀석 처럼 이곳 저곳을 찝적된 듯, 웹 어플리케이션 뿐만 아니라, 3D, 게임, IoT, 모바일 등 여러가지로 발전한 것 같다. 그러다보니 대체 어디서 부터 손을 대야할지 막막했다.

아예 생 초보용 예제들은 Command 라인을 통해 java 소스를 컴파일하고, .class 파일을 java로 실행하는 구조를 보여준다. 그래서 Command 라인에서 직접 텍스트를 출력해보고, "아.... Hello world는 이렇게 찍는거구나" 의 레벨이다. 그렇다고 냅따 실전으로 넘어가자니, JAVA_HOME이 어쩌고, Tomcat이 어쩌고, 라이브러리 연결은 어쩌고 하는 내용이 이게 완전 암호문 수준이다. 물론 하나씩 파면 되겠지만, 보자마자 좀 많이 멍하다.

일단, 단순 Java 기반 Application 개발 로 시작하려고 한다. Command Line 형태의 개발이든, Tomcat을 이용한 개발이든... 시작해야 하지 않을까 싶다.

Eclipse 설치

 

Eclipse Downloads | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

일단 Eclipse를 설치하도록 한다. 예전에는 Java RE를 따로 설치해야 했는데, 이제는 Java Runtime Environment가 다 포함된 설치 버전이 생겼다. 현재 내 PC는 Windows 10의 64 비트다 보니, 자동으로 Windows의 64bit 버전이 다운 받아진다. 이 글을 쓰는 시점에 2021-03 버전이 다운로드 된다.

설치를 시작하면, 어떤 환경을 사용할지가 나오는데, Java 개발환경은 2가지다. 일반 Java 개발자 환경과 Enterprise Java용이다. 아마도 단순 Application 개발이나, 필요시 플러그인 및 관련된 구성을 알아서 한다면 Java Delveloper 버전을, Web 구성을 하겠다면 Enterprise Java 버전을 설치하면 될 것 같다.

될 것 같다는 의미다. 사실 잘 모른다. 일단 추후 Micro-Service 구성을 위해서 Enterprise Java and Web Developers 버번을 선택했다. 나머지는 설치 위치나 JVM 버전등을 선택하는것인데, 그냥 기본값으로 설정된대로 진행한다. 말이 설치지, JVM을 제외하면 실제로는 특정 폴더에 압축 풀어 제공하는 것이다.

 

H(igh)-DPI 환경에서

지금 개발용 PC의 화면이 4K이다. 그러다 보니 그냥 Eclipse를 실행보니, 아이콘들이 짜글어들어 보여 보기가 매우 불편하다. 화면에 보이는 아이콘이 완전 짜글어들어서 도무지 화면에서 아이콘이 제대로 보이지 않는다.

이 문제를 해결하려면, Eclipse 실행 아이콘에서 "속성"에 들어가 "호환성"탭을 선택한다. 그리고 "높은 DPI 조정 재정의" 부분을 체크한 뒤, "시스템"을 선택한다.

그러면 아까 화면보다는 약간을 뿌여져보이지만, 그래도 아이콘 크기나 화면 배치가 그럭저럭 볼 만하다.
(위의 화면보다, 아이콘이 조금더 커지고 각 화면 배치도 그럭저럭 볼만하다)

 

몇가지 추가 설정

Eclipse를 그대로 써도 되겠지만... 몇가지만 설정을 했다. 하나는 표시 폰트이고, 다른 하나는 단축키다.
설정을 하려면, Eclipse를 먼저 실행 한 뒤, 메뉴에 있는 Windows 메뉴를 선택한 뒤, Preference를 선택한다.

폰트

기본적으로 Consolas 라는 폰트를 사용하지만, 개인적으로 코딩을 할 때, D2Conding 체를 많이 쓴다. 그래서 그 설정을 한다. 설정창에서 왼편 트리 메뉴에서 General -> Appearance -> Colors and Fonts 를 선택한다. 그러면 오른편에 Colors and Fonts 화면이 나오는데, 이 중 Basic을 펼친 뒤, 맨 아래 쪽의 Text 항목들을 선택하고 Edit를 한다. 그리고 그 안에서 원하는 폰트를 설정하면 된다. 한번에 전체 내용을 변경하고 싶었는데, 같은 유형에 해당하는 항목들은 자동으로 같이 변경되지만, (예를 들어 Text Font를 변경하면, Compare text font도 변경됨), 그렇지 않은 경우도 있다. 만일 이 부분도 수정하고 싶다면, 항목을 열어 수정을 해주면된다. 개인적으로는 소스 보는 창 정도만 바꿔도 될 것 같다.

 

 

Debug 단축키

Visual C++ 6.0 때부터 2021까지 나온 시점까지 MS 개발툴의 경우 실행 키가 "F5"다. 그래서 여기서도 F5키를 누르면 디버깅이 되도록 할 예정이다. General -> Keys 항목을 찾으면 되는데 문제는 항목가짓수다. 아마도 이클립스에서 제공하는 많은 명령을 여기다 한번에 표현해버리는 바람에 감당이 안될 정도로 표시된다.

그래서 입력창에 Debug라는 필터 값을 넣어 분류를 한다.

저 F11 부분을 F5로 변경한다. 물론 이미 이 Eclipse 단축키에 익숙하다면 굳이 변경할 필요는 없다.

 

Java Project 개념

Visual Studio의 솔루션, 프로젝트 개념이 익숙해있어, 이 Java 프로젝트 개념을 이해하지 못했다. 알고보니, 이클립스의 설정 부터, 프로젝트의 설정까지 하나의 폴더 아래에 구축한다는 것이다. Visual Studio의 Solution을 여기서는 Workspace라고 표현한다. 그리고 Workspace에 정의한 폴더가 바로 전체 프로젝트들의 root 폴더의 역할을 하는 것이다. 맨 먼저 이 폴더를 적당히 설정한다.

그리고 난 뒤 "New" 한 뒤, 프로젝트를 선택한다. 사실 이 메뉴만으로도 충분히 머리가 아파왔다.

 

붉은색 박스 부분이 프로젝트 종류인데, 뭘 선택해야 할지.. 막막하긴 했다. 그래서 그나마 익숙하다고 생각된 Application Client Project를 선택했다. 이름 그대로 그냥 코드짜면 main 부터 시작되는 단순한 프로젝트라고 생각한다.(아마도 맞을듯...)

그러면 프로젝트 설정 화면이 나온다.

무언가 설정하는 이런 저런 것이 있을 것 같은데, 그냥 이름만 정해서 넣고 "Finish"를 눌렀다.

일단 여기까지 프로젝트만 만들어봤다.

 

 

 

 

728x90

+ Recent posts