JAVA 개발 커리쿨럼

이것 올릴까 말까 고민했는데 그냥 자바 진영은 이런 식으로 한다 참고 삼으시면 좋을것 같아 한번
올려봅니다. 저걸 참고해서 .Net으로 바꿔본다 하는것도 좋을것 같습니다.

JAVA

JVM

간략 설명 : [java] JVM 구조 : 네이버 블로그

JDK, JRE, JVM 관계 : 나만의공간。 : 네이버 블로그

GC(garbage collection) : 나만의공간。 : 네이버 블로그

좀 더 궁굼하면 : 벽보고 욕이라도 하자: 오랜만에 Garbage Collection 정리

JAVA 언어 강좌 링크(생활코딩) : Java - 생활코딩

자바 문법 기초 소스 코드 및 연습 문제 : GitHub - matyb/java-koans: A framework and lessons to learn java syntax and idioms in a logical sequence.

JAVA7 변경 요약 : Java 7의 새로운 특징 : Java7에서의 중요한 변화들과 업데이트된 항목에 대한 조사. - 한빛출판네트워크

JAVA8 변경 요약 : https://skyoo2003.github.io/post/2016/10/25/introduction-to-java8

Spring 5 & Spring boot 2의 권장 버전은 JAVA8

JAVA9 변경 요약

https://www.popit.kr/나만-모르고-있던-java9-빠르게-보기/

JAVA10 변경 요약 : https://itstory.tk/entry/Java-10-신규-기능특징-정리

JAVA11,12 릴리즈됨… 곧 13 릴리즈 예정…

(옵션)Java6 이후 챙겨봐야하는것들

스트림 API

람다 표현식

Spring Framework & 주로 함께 사용하는 Framework & etc.

Spring Framework 개념 강좌 링크

스프링 부트 공식 레퍼런스 : https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/

공식 가이드 : https://spring.io/guides

공식 스프링 전체 프로젝트 : https://spring.io/projects

Spring Legacy Framework

hello world 따라하기 링크 : Spring 강좌 1강 - 개발환경 구성

위 따라하기 중 주의사항 : 라이선스 문제로 인하여 Oracle JDK를 설치하면 안됨(http://www.itdaily.kr/news/articleView.html?idxno=92150)

Open JDK로 설치

공식 사이트 : https://openjdk.java.net/

설치 가이드 : OpenJDK: Download and install

윈도우즈 설치 파일 : GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project

Mac : 오픈 JDK MAC 에 설치하기

Spring Boot Framework

Spring Boot란 : 스프링부트 소개 · GitHub

Spring Boot 2.0 변경 요약 : Spring Boot 2.0 수박 겉 핥기. 이번 포스팅은 FunFunStudy의 4번째 뻔뻔한 발표를 위해서… | by 디지털 세상을 만드는 아날로거 | Medium

백기선의 Spring Boot 강좌 노트 : https://www.slideshare.net/whiteship/ss-108533045

백기선의 Spring Boot 유료 강좌 링크(비싸요) : 스프링 부트 개념과 활용 - 인프런 | 강의

백기선의 Spring Boot 너튜브 강좌 : https://www.youtube.com/playlist?list=PLfI752FpVCS8tDT1QEYwcXmkKDz-_6nm3

Spring Boot + Kotlin 따라하기 : Spring Boot와 Kotlin으로 웹 애플리케이션 구축하기 | Developer's Record

참조할만한 소스 코드들

ORM

ORM이란 : [DB] ORM이란 - Heee's Development Blog

JPA

JPA란 : [JPA] JPA란 무엇인가?

Spring Data JPA : https://spring.io/projects/spring-data-jpa

Spring Boot에서 Spring Data JPA 사용 예제 : [SpringBoot] JPA 설정 및 테스트

Hibernate

소개 : Your relational data. Objectively. - Hibernate ORM

Spring Boot + Hibernate : 스프링 부트 Auto-configuration과 JPA(하이버네이트) SQL문 로깅 | by Yoo Young-mo | Medium

SQLMapper

Mybatis

Mybatis 소개 및 사용법 : MyBatis – 마이바티스 3 | 소개

구 iBatis와 Mybatis의 차이점 : mybatis Framework (마이바티스 개념, ibatis와 차이, 구조, api, SqlSession)

Spring Boot + Mybatis : spring-boot에서 mybatis로 mysql 연동하기 - 👨‍💻꿈꾸는 태태태의 공간

Templet Engine

Templet Engine이란 : [Template Engine] 템플릿 엔진(Template Engine)이란 - Heee's Development Blog

Spring에서 view templet으로 사용하는 것들 : FreeMarker, Groovy, Thymeleaf, Velocity, JSP

Freemarker : https://freemarker.apache.org/

Freemarker 기본 사용법 : freemarker 설명 및 기본 예제 - [종료]구루비 Dev 스터디 - 개발자, DBA가 함께 만들어가는 구루비 지식창고! , Template Language Reference - Apache FreeMarker Manual

Spring Boot + Freemarker 사용 : Spring Boot, FreeMarker 템플릿 뷰 적용하기

Velocity : https://velocity.apache.org/

Velocity 기본 사용법 : Velocity 사용하기 :: 소림사의 홍반장! , Apache Velocity Engine - User Guide

Spring Boot + Velocity 사용 : spring boot-4(Velocity 설정과 사용)

STS(Spring Tool Suite) 다운로드 : https://spring.io/tools

배포하기

빌드 도구

빌드 도구 설명 : https://jj-one-a-week.blogspot.com/2017/05/ant-maven-gradle.html

maven vs gradle : Maven vs Gradle

maven 빌드 설정파일 설명 : 메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? (pom.xml 분석하며 가볍게 정리하는 빌드 툴, Maven)

gradle 빌드 설정파일 설명 : https://effectivesquid.tistory.com/entry/Gradle-빌드시스템-기초

웹서버

Apache : https://httpd.apache.org/docs/2.4/ko/

NginX : https://nginx.org/en/

WAS

Tomcat : http://tomcat.apache.org/

톰캣 성능 Question?

https://cwiki.apache.org/confluence/display/TOMCAT/Performance+and+Monitoring

http://toby.epril.com/?p=1125

기타

오픈소스 : glassfish, JBoss 등

상용 : WebSphere, WEBLogic, JEUS 등

DB, NoSql 등

DB 종류 별 랭킹 : https://db-engines.com/en/ranking

redis : https://redis.io/

couchbase : https://www.couchbase.com/

다운로드 : https://www.couchbase.com/downloads

System Resource Requirements : https://docs.couchbase.com/server/6.0/install/pre-install.html

설치 가이드 : https://docs.couchbase.com/server/6.0/install/install-linux.html

infinispan : https://infinispan.org/

mongodb : https://www.mongodb.com/

cassandra : http://cassandra.apache.org/

mariadb : https://mariadb.org/

mariadb storage engine들 : https://mariadb.com/kb/en/library/storage-engines/

mariadb columnstore

개념 : http://blog.naver.com/PostView.nhn?blogId=hanajava&logNo=220969987180&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView

설치 : https://knoow.tistory.com/180

리눅스

Linux 강좌 링크 : https://opentutorials.org/course/2598

Linux 설치

CentOS7 설치 가이드 : https://jootc.com/p/201806031103

로컬 PC Windows에 Linux를 설치하려면 먼저가상 머신 설치(Mac은 다들 잘 아시니…)

Hyper-V : Windows 10 Pro, 8 Pro인 경우 Hyper-V 설치 사용 가능

Hyper-V 소개 : https://docs.microsoft.com/ko-kr/virtualization/hyper-v-on-windows/about/#operating-systems-you-can-run-in-a-virtual-machine

Hyper-V 설치 : https://docs.microsoft.com/ko-kr/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

Vmware : Vmware Workstation Player는 설치하면 안됨. 무료 버전이지만 상업조직에서는 사용 불가. 집 PC에는 상관 없음

VirtualBox : 가장 많이 사용하지만 라이선스 정책이 좀 애매함

VirtualBox 라이선스 관련 링크

https://www.oss.kr/oss_license_qna/show/dab50438-d8a4-4260-a3c9-a38c61edcf56

https://m.blog.naver.com/PostView.nhn?blogId=yexx&logNo=220602850523&proxyReferer=https%3A%2F%2Fwww.google.com%2F

Container

Container 개념 : https://captcha.tistory.com/46

Docker : https://captcha.tistory.com/45?category=830258

Kubernetes : https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

APM : Application Performance Management

APM이란 : https://ko.wikipedia.org/wiki/애플리케이션_성능_관리

상용 APM : 한국에서는 dynatrace, New Relic, 제니퍼 등을 주로 사용함. 매우 비싼 가격…

오픈소스 APM

Pinpoint(NHN 공개 오픈소스)

소개, 설치, 사용 가이드 : https://docs.ncloud.com/ko/pinpoint/pinpoint-1-2.html

Scouter(LG CNS 공개 오픈소스, 전 제니퍼소프트CTO가 직접 개발)

소개, 설치, 사용 가이드 : https://github.com/scouter-project/scouter/blob/master/README_kr.md

기타 : https://www.joecolantonio.com/apm/

DB 모니터링 솔루션

상용 : Sherpa(http://www.sherpasoft.com/subPage/product/product_sherpasqlServer.html), MaxGauge(https://m.ex-em.com/product/maxgauge) 등… 비싼 가격…

트라이얼 or Free : https://www.comparitech.com/net-admin/best-database-monitoring-tools/

JAVA NIO Server Framework, 초고성능 REST API 혹은 TCP서버 등을 개발할때 주로 활용

Netty : https://netty.io/

Grizzly : https://javaee.github.io/grizzly/

Thrift : https://thrift.apache.org/

Thrift는 바이너리 직렬화 프로토콜 용도로만도 사용됨

(곁가지)주로 사용되는 바이너리 직렬화 프로토콜 : Thrift, Protocol Buffer, Avro 등

(곁가지)바이너리 직렬화 프로토콜 참고 자료

성능 비교 : https://labs.criteo.com/2017/05/serialization/

ttps://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%8A%A4%EB%A6%AC%ED%94%84%ED%8A%B8

ttps://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%95%84%EB%B8%8C%EB%A1%9C

ttps://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C_%EB%B2%84%ED%8D%BC

성능테스트

읽어보면 좋은 글 : http://woowabros.github.io/experience/2018/05/08/billing-performance_test_experience.html

오픈소스 성능테스트 툴

비교 : https://atyou73.github.io/itrepo/post/compare-loadtest-tool-1/

Jmeter : https://jmeter.apache.org/

사용법(매우 쉬움) : https://qjadud22.tistory.com/35 , https://jmeter.apache.org/usermanual/get-started.html

특이사항1 : 대량 부하 투입을 위한 [Controller-멀티 부하Agent] 구성이 가능하나 고사양의 머신 필요함. 단독 부하기로 사용시에는 PC에서도 무리 없음.

특이사항2 : GUI툴 기능으로 간단한 시나리오는 쉽게 구현되나 시나리오의 복잡도가 높을 경우 JAVA로 일부 프로그래밍 필요

nGrinder : https://github.com/naver/ngrinder

설치 : https://kamang-it.tistory.com/entry/nGrindernGrinder-설치및-사용법1 , https://github.com/naver/ngrinder/wiki/Installation-Guide

사용법 : https://github.com/naver/ngrinder/wiki/User-Guide

시나리오 스크립트 : Groovy 혹은 Jython으로 작성(https://github.com/naver/ngrinder/wiki/Scripting-Guide)

성능테스트 진행 시, 주의사항

타사 웹서비스를 대상으로 부하를 발생시키면 안됨(공격으로 분석되어 IP가 차단될 수 있고, 법적 책임이 발생할 수도 있음)

우리 웹서비스 실서버를 대상으로 부하를 발생시키면 안됨

웹서버 다운이나 사이트 속도 다운을 유발할 수 있음. 경우에 따라서는 DB서버에는 심각한 영향 발생 가능

우리 보안 장비의 룰에 의해서 IP가 차단될 수 있음

혹시 실서버 대상으로 성능테스트를 진행할 경우 어플리케이션, 서버, 네트워크, DB의 실시간 모니터링 하에서 테스트를 시작하고, 이상이 감지될 경우 즉시 중지해야함

혹시 실서버 대상으로 성능테스트를 진행할 경우 웹보안 장비에 부하기 머신 IP를 예외 허용 등록해야함

부하 쓰레드 조절 컨트롤러를 사용하여 낮은 수의 쓰레드로 테스트를 시작, 일정 시간씩 텀을 주고 순차적으로 목표 부하 쓰레드까지 올라가는 형태로 진행해야함

TPS(transaction per second) 개념 설명 : https://www.whatap.io/blog/14/

참고 : TPS를 throughput per second으로 부르기도 함.

참고 : 웹서비스 성능테스트 엔지니어들은 일반적으로 웹서비스 페이지 1개를 브라우저에 로딩하기 위해 포함되는 Request(ex : url call + ajax call + javascript call + css call + image call)들의 집합을 Transaction이라 칭함.

트러블 슈팅

인텔리J에서 Could not autowire. No beens of ‘xxx’ type found.

https://stackoverflow.com/questions/26889970/intellij-incorrectly-saying-no-beans-of-type-found-for-autowired-repository

인텔리J에서 롬복 적용 방법

https://chan7ee.tistory.com/entry/intellij-lombok-적용

자바 12 or 11을 설치하고 나서 스프링 부트 프로젝트를 시작할때 Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException 에러가 발생하면

https://java.ihoney.pe.kr/521

11개의 좋아요

어마어마하네오 굳드

2개의 좋아요

와우…
저도 조만간 전자정부기반이랑 병행할 일이 생길 것 같은데
정말 중요한 자료를 공유해 주셨네요 ㅎㅎㅎ
두고두고 봐야겠습니다. 감사합니다.

1개의 좋아요

@파란매 귀한 내용 감사합니다!!

1개의 좋아요

확인해보니 링크가 이상하게 걸려서 다시 수정작업했습니다.

2개의 좋아요