Java vs Go
by anonymous · 2026-06-13 09:40:57 · 1 view
제목: 2026년에 Java를 새로 시작한다는 사람을 보면 드는 생각
Java 개발자:
"Java 25 나왔습니다."
나:
"그래서 이제 빌드하면 바로 실행됨?"
Java 개발자:
"아니요."
Go 개발자:
go build
끝.
Java 개발자:
./gradlew build
잠시 후
Downloading...
또 잠시 후
Downloading...
계속
Downloading...
Go는 언어를 설치한다.
Java는 생태계를 설치한다.
Go 프로젝트:
main.go
go.mod
끝.
Java 프로젝트:
src/
gradle/
maven/
wrapper/
resources/
application.yaml
application-prod.yaml
application-dev.yaml
application-local.yaml
application-test.yaml
뭔 HTTP 서버 하나 띄우는데 설정 파일이 소설책 분량임.
Go:
func main() {
http.ListenAndServe(":8080", nil)
}
Java:
@SpringBootApplication
@EnableScheduling
@EnableAsync
@EnableConfigurationProperties
@EnableTransactionManagement
@EnableWhateverTheFuck
왜 서버를 띄우는데 결계술을 시전하냐?
Java 개발자:
"이번에 Virtual Thread 나왔어요."
Go 개발자:
"그게 뭐임?"
Java 개발자:
"goroutine 비슷한 겁니다."
Go 개발자:
"아."
Java는 가끔 보면
"야 우리도 된다!"
를 15년 주기로 반복하는 언어 같다.
Go:
go f()
Java:
CompletableFuture
.supplyAsync(...)
.thenApply(...)
.thenCompose(...)
.thenAccept(...)
Go 개발자:
"그래서 저게 뭐 하는 건데?"
Java 개발자:
"저도 방금 StackOverflow에서 복사했습니다."
Java 개발자:
"이번 버전에서 startup time이 많이 줄었습니다."
Go 개발자:
"얼마나?"
Java 개발자:
"예전보다 절반."
Go 개발자:
"그래서 몇 ms?"
Java 개발자:
"..."
Go 바이너리:
scp server host:
배포 끝.
Java 배포:
JDK 버전 확인
JVM 옵션 확인
GC 설정 확인
Spring 설정 확인
Tomcat 설정 확인
서버보다 설정 파일이 더 무거움.
Java 장애 분석:
Exception
원인 찾기 시작.
Caused by
아님.
Caused by
이것도 아님.
Caused by
이것도 아님.
Caused by
계속 내려감.
Caused by
계속.
Caused by
계속.
맨 아래:
NullPointerException
원인:
user == null
로그 9000줄의 대서사시를 읽은 결과:
null이었다.
Go 개발자:
"메모리 50MB 씀."
Java 개발자:
"우리도 튜닝하면 300MB까지 줄일 수 있습니다."
Go 개발자:
"왜 줄여야 하는데?"
Java 개발자:
"클라우드 환경에서는..."
Go 개발자:
"그 메모리로 VPS 하나 더 사겠는데?"
Go는 코드가 못생겼다.
Java는 코드가 못생긴 건 둘째치고 그 못생긴 코드를 생성하는 프레임워크가 7겹이다.
Java의 가장 위대한 업적은
"Java 없이도 살 수 있다는 사실을 Go가 증명했다"
인 것 같다.
요약
1998년:
"Java는 미래다."
2008년:
"Java는 미래다."
2018년:
"Java는 미래다."
2026년:
"Java는 이제 진짜 미래다."
Go 개발자:
"그 미래 아직도 안 왔냐?"