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 개발자:

"그 미래 아직도 안 왔냐?"

Back

Comments

No comments yet.