1. 통합개발환경(Integrated Development Environment, IDE) 선택
- 통합개발환경의 결정은 매우 중요하다
- 개발자는 어떤 통합개발환경을 선택하는가에 따른 영향을 받을 수 있으므로 팀 단위로 개발 업무를 진행하기 위하여 통합개발환경을 맞추고 개발을 진행하는 것이 좋다
- 통합개발환경의 선택 요인은 개발자의 툴 학습 정도에 따른 생산성이나 기타 여러 요인들을 종합적으로 검토하여 결정한다
- Jetbrains사의 IntelliJ는 상용 프로그램으로 최근 전세계적으로 많은 개발자가 사용하고 있다
- 이전까지는 무료로 제공되는 Eclipse를 많이 사용했다
- 프로그램이 무겁고 개발에 따른 구현 항목이 많아지면 속도가 느려지는 등의 문제가 많다 - IntelliJ는 Eclipse의 여러 문제를 해결하고 더 강력한 사용 경험을 제공한다
- IntelliJ는 무료 버젼도 제공한다
- 무료인 커뮤니티 버젼은 학습 수준의 개발을 경험하는데 크게 무리가 없다
- 상용 버전의 전체 기능을 제공하지는 않으며 일부 제한된 기능만을 사용할 수 있다
2. JDK(Java Development Kit) 선택
- JDK는 자바 언어로 자바 프로그래밍을 할 수 있게하는 자바 개발 도구이다
- JDK를 설치하지 않으면 자바 언어로 개발 할 수 없다
- 예전에는 JDK가 무료로 제공되었지만 Oracle 기업에서 JDK를 관리하면서 유료 도구로 전환되었다
- OpenJDK는 무료 버전의 자바 개발 도구이며 여러 벤더에서 제공하고 있다
<벤더별 OpenJDK 목록 - 출처 : Stackoverflow>
- 일반적으로 AdoptOpenJDK를 많이 사용한다
3. 프레임워크(Framework) 선택
- 프레임워크는 Spring-boot를 선택한다
4. 빌드 방식 선택
- 빌드 방식은 크게 두가지로 Maven 과 Gradle 이 있다
- 프로젝트를 진행하는 과정에서 구현하는 코드 외에 많은 외부 라이브러리들을 참조해서 개발을 하게 되는데 빌드 툴을 사용하지 않으면 외부 라이브러리들을 모두 직접 관리해야 하고 프로젝트 빌드 시에도 빌드에 대한 표준을 설정하여 빌드 해야한다
- 빌드 툴을 사용하면 개발 속도를 높이고, 생산성을 증대시킬 수 있다
- 이전에는 Ant라는 것을 많이 사용했지만 Maven이 Ant를 넘어서 더 많은 개발자들이 사용하고 있다
- Maven은 빌드의 요소를 XML로 정의하고 있는데 XML은 사람의 시각에서 보기 편한지 않다
- 여러 라이브러리들이 의존 관계를 형성하는 경우에도 어려움을 겪을 수 있다 - Gradle은 최근에 선호도가 매우 높아졌다
- Gradle은 Groovy라는 것을 사용하기 때문에 동적인 빌드 시에 여러 문제들을 Groovy 스크립트 등을 통해 해결한다
- 처리 속도가 Maven에 비해 월등히 빠르다
5. 형상관리(Software Configuration Management) 방법 결정
- Git과 같은 형상관리 방법을 사용하지 않으면 개발자는 개발을 진행함에 있어 여러가지 어려움을 경험한다
- 첫번째는 개발중인 코드가 예상치 못한 사고로 인해 통째로 날아갈 수 있다
- 두번째는 버전 관리가 어렵다
: 작성한 코드를 수정해야 할 경우에 한번에 완벽하게 수정이 완료된다면 문제 없지만, 잘못 수정될 수 있다
: 형상관리 툴은 버져닝(버전관리)을 한다
: 소스 코드를 원격지에 백업하는 용도 외에도 코드의 히스토리를 기록하여 원하는 버전으로 대체할 수 있다
- 세번째는 협업을 하기에 용이하다
: 규모가 큰 프로젝트를 진행할 경우 개발자 혼자서 모든 것을 구현하기는 어렵다
: 여러 사람이 협업하여 진행할 경우에는 소스코드가 중복되거나 같은 부분을 다르게 수정하여 소스 코드간에 ‘충돌' 현상이 발생할 수 있다
: 동일한 소스 코드의 업무별 분리와 취합이 힘들고 장소의 제약을 받을 확률도 매우 높다
: 형상관리를 활용하면 여러 사람이 함께 공통의 코드를 관리하고 취합할 수 있으며, 용도별로 저장소를 구분하여 ‘충돌(Conflic)'과 ‘병합(Merge)'의 문제가 해결된다 - 형상관리 서비스는 많은 제품이 있다
- Git 외에도 이전에는 SVN이라는 형상관리 방식을 많이 사용했다
- SVN은 아직도 많은 개발자와 기업에서 사용하고 있다
- Git으로의 전환을 늦추는 이유는 비용과 시간을 고려한 업무 효율성 때문이다
- Git은 Github 라는 강력한 서비스를 통해 전 세계에서 가장 많이 사용하는 형상관리 서비스이다
6. IntelliJ 설정
- 인텔리제이의 Setting > Version Control > Git 에서 Git을 설치한다
- 인텔리제이의 Setting > Version Control > GitHub 에서 +를 눌러 자신의 Git을 등록한다
- 신규 프로젝트에서 Alt + ` 을 누른다
- 화면 창에서 commit를 선택하여 저장소를 연결한다 - Commit 을 선택하면 IntelliJ의 화면 구성이 변하고 Commit to main이라는 탭이 나타난다
- Github Repository에 최초의 소스코드를 등록할 예정이므로 프로젝트 생성시 만들어진 모든 파일들이 업로드 되어야 한다
- Unversioned Files를 체크하여 Commit 대상을 모두 선택한다 - 아래 ‘Commit Message’ 항목에 커밋 내용을 initial 이라고 적고 ‘Commit and Push’ 버튼을 눌러 Github Repository에 등록한다
- Github 계정에는 연결되어 있지만 어떤 Repository에 연결할지는 설정하지 않았다
- Commit and push 전 해당 프로젝트가 연결될 Repository를 지정해야 한다
- Define remote를 누르고 Github에서 생성한 Repository의 주소를 적습니다.
- Repository가 연결되고 난 뒤 push 버튼을 눌러 원격지에 내보낸다
- 프로젝트명에서 우클릭하여 나타나는 메뉴 중에서 ignoir를 선택한다
- 아래 화면처럼 설정한 후 generate을 클릭하면 프로젝트 파일에 ingnoir 파일이 생성된다