푸른영혼의 별 | Tech Blog
Java Backend Engineer의 기술 블로그입니다.
Spring Boot, MSA, JPA, Kafka, Kubernetes 등 실무 경험을 공유합니다.
주요 프로젝트: Settlement MSA · ASAT · GitHub
Posts (총 915편 · 25 / 92 페이지)
-
자바의 역사
자바(Java)는 1995년 5월 23일 Sun Microsystems가 공식 발표한 프로그래밍 언어다. James Gosling을 중심으로 한 팀에 의해 개발되었으며, “한 번 작성하면 어디든 실행된다(Write Once, Run Anywhere, WORA)”는 철학으로 출발했다.
-
Java의 역사 — Oak에서 현대까지
초기 — Oak와 Green Project (1990–1995)
-
자바와 코틀린의 동시성 차이 — 스레드는 둘 다 싸졌는데, 취소는 왜 아직 다른가
이 블로그에는 가상 스레드와 코루틴을 비교한 글이 이미 여러 개 있다. 거기서 든 근거의 상당수는 “코루틴이 훨씬 가볍다”, “자바는
synchronized에서 핀이 걸린다” 였다. 그 근거들은 지금 대부분 유효하지 않다. -
코루틴이 가상 스레드보다 가볍다는 말이 뒤집히는 지점 — 자바 25 에서 직접 재봤다
이 블로그엔 가상 스레드와 코루틴을 비교한 글이 이미 두 편 있다. 둘 다 개념 비교였다. 이번 글은 다르다. 같은 기계, 같은 JDK 25 에서 같은 모양의 일을 양쪽으로 돌려 숫자를 재고, 그 숫자가 통념과 어긋나는 한 지점을 찾아 바이트코드까지 열어본 기록이다.
-
자바의 동시성과 비동기 — 비동기는 목표가 아니라 우회로였다
“동시성”과 “비동기”는 자주 한 덩어리로 쓰인다. 그런데 둘은 같은 축의 단어가 아니다.
-
HashSet 은 자료구조가 아니라 HashMap 이다 — OpenJDK 소스로 확인한 6가지
HashMap과HashSet은 자바에서 제일 먼저 배우고 제일 자주 쓰는 자료구조다. 그래서 대부분 “O(1) 조회” 라는 한 줄로 이해를 멈춘다. -
자바 jar 를 오라클 스케줄러로 돌려 메일 보내기 — 조용히 틀리는 지점들
“매일 새벽에 집계해서 담당자한테 메일 보내라” 는 요건은 오래된 만큼 길도 여러 갈래다. 그중 한국의 오라클 기반 시스템에서 유난히 자주 보이는 조합이 실행 가능 jar +
DBMS_SCHEDULER다. -
락을 걸었는데 왜 옛날 값이 나오나 — synchronized · JPA 영속성 컨텍스트 · MyBatis 로컬 캐시, 낡음이 사는 세 개의 층
동시성 버그 리포트에서 가장 자주 보는 문장이 있다.
-
SMTP 서버의 변천사 — 신뢰의 자리가 옮겨온 44년
SMTP 를 처음 규정한 RFC 821 은 1982년 8월 문서다.1 지금 쓰는 RFC 5321 은 2008년이고,2 명령어는 여전히
HELO/MAIL FROM/RCPT TO/DATA다. 44년 동안 프로토콜의 뼈대는 사실상 그대로다.-
RFC 821 (STD 10), Simple Mail Transfer Protocol, J. Postel, 1982년 8월. https://www.rfc-editor.org/info/rfc821 ↩
-
RFC 5321, Simple Mail Transfer Protocol, J. Klensin, 2008년 10월 (RFC 2821 폐기, RFC 1123 갱신). https://www.rfc-editor.org/info/rfc5321 ↩
-
-
자바 21과 자바 25의 가상 스레드 — 21에서 막혀 있던 것이 25에서 풀렸다
가상 스레드는 자바 21에서 정식 기능이 됐다. 그런데 21을 쓰던 사람들은 곧 같은 벽을 만났다.
synchronized안에서 블로킹하면 가상 스레드가 캐리어에 못 박힌다(pinning). 그래서 “가상 스레드를 쓰려면 라이브러리부터ReentrantLock으로 갈아엎어야 한다”는 말이 따라다녔다.