본문 바로가기

프로그래밍(TA, AA)/JVM 언어

(117)
[자바] 계승과 구성 방식에 관하여 이전에 쓰레드관련 포스팅에서 객체합성이 상속보다 더 낫다라는 얘기를 잠깐 꺼낸적이 있습니다. 자바 이펙티브 서적에서 관련 내용을 다루고 있어 이 포스팅에서 주요 내용들을 정리해 보려 합니다. 실제 대규모 프로젝트를 접하다 보면, 하나의 객체가 만들어지기까지 몇번의 합성을 거치는 경우를 많이 보게 됩니다. 그 이유가 늘 궁금했는데, 그 질문에 대한 답을 차근히 써내려 가겠습니다. 상속은 자바에서 재사용을 돕는 강력한 도구이지만, 최선이라고 할 수 없습니다. 왜냐하면 상속을 적절히 사용하지 못하면 깨지기 쉬운 상태의 소프트웨어가 되기 때문입니다. 보통 상속은 상위 클래스와 하위 클래스 구현을 같은 프로그래머가 통제하는 단일 패키지 안에서 사용하면 안전합니다. 애초에 상속을 고려해 설계되고 그에 맞는 문서를 ..
[자바] 주요 개념 정리 finalize 메서드Java의 자동화된 쓰레기 수집기(garbage collector)는 객체를 삭제하기 전에 finalize() 메서드를 호출합니다. 따라서 객체가 삭제되기 직전에 실행되어야 하는 동작이 있다면 Object 클래스에 정의된 finalize() 메서드를 오버라이드하여 정의할 수 있습니다. Collection FrameworkJava의 컬렉션 프레임워크는 아주 유용합니다. 그 중 가장 유용한 몇 가지를 들어보면 다음과 같습니다. ArrayList: ArrayList는 동적으로 크기가 조정되는 배열로, 새 원소를 삽입하면 크기가 늘어납니다. ArrayList myArr = new ArrayList(); myArr.add("one"); myArr.add("two"); System.out.pr..
[자바] 자바를 잘 사용하기 위한 78가지 규칙 이펙티브 자바 2판에 수록된 내용입니다. 각 규칙에 대한 상세내용은 대중교통 오고가는 시간에 차례차례 읽어나가고 있습니다. java로 이런저런 개발시 단순히 문법 나열이 아닌, 잘 만들어진 SW를 작성하는데에 아주 유용한 팁이 될 것 같습니다. java 언어에 이런 기능이 있는데, 어떤 상황에서 어떠한 이유를 이런 것을 쓴다는 것을 아는 것은 매우 중요하다고 생각하며, 아래 규칙들을 또 정리하다보니 그동안 잘짜려고 노력했던 코드들이 상당부분 아래 규칙과 맞아떨어지는 부분들도 있었던 것 같습니다. 아래 규칙을 정의한 이펙티브 자바 저자는 더많은 경험과 지식을 갖고있는 훌륭한 개발자이니만큼 주니어개발자로서 모르는 부분은 배워서 실무에서 적용해보려고 합니다. 자바 코딩시 명료함(clarity)과 단순함(sim..
[자바] Effective Java 2/E 발 행: 2014년 9월 1일지은이: 조슈아 블로크(Joshua Bloch) 머리말 내용 일부 발췌: 프로그래밍 언어를 잘 사용한다는 것은 무엇일까요? 일단 언어의 핵심을 이해해야 합니다. 알고리즘적 언어인가, 함수형 언어인가, 객체 지향언어인가? 어휘도 알아야 합니다. 표준 라이브러리에 어떤 자료 구조와, 연산과, 기능이 포함되어 있는가? 그런 다음에는 코드 구조를 만드는 관례와 효과적 용법을 이해해야 합니다. 프로그래밍 서적들 상당수는 앞 두 가지에만 신경을 쓰며, 코딩 관례와 효과적 용법은 잠깐씩만 설명하고 넘어갑니다. 문법과 어휘는 언어에 고유한 속성이지만, 용례는 그 언어를 사용하는 커뮤니티의 특성입니다. 예를 들어 자바(Java)는 단일 계승(Single inheritance)만 지원하는 객체..
[스프링] 스프링의 기술 기술과 비즈니스 로직을 분리하고 POJO 방식의 애플리케이션 개발을 가능하게 한다는 스프링의 목적을 쉽게 이루려면 스프링과 같은 POJO 프레임워크가 필요합니다. 스프링에는 POJO 프로그래밍을 손쉽게 할 수 있도록 지원하는 세가지 가능 기술을 제공합니다. 앞서 살펴봤던 스프링 삼각형이라는 그림에 나와있듯이, 엔터프라이즈 개발에서 POJO 개발이 가능하려면 삼각형의 각 변을 이루고 있는 기술들이 뒷받침돼야 합니다. 그 세 가지 기술은 바로 IoC/DI, AOP, PSA입니다. 이 세가지 모두 스프링이 있기 이전에도 여러 가지 형태로 시도됐고 발전하고 있던 기술이었습니다. 사실 객체지향의 설계와 개발원리를 잘 적용하다 보면 자연스럽게 만들어지는 것이기도 합니다. 다만 스프링은 그것을 통일성 있게, 더 세련..