Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

작은자바이야기

From ZeroWiki
Revision as of 06:13, 25 May 2012 by imported>neocoin

소개

  • --작은 자바를 건드리면 어떻게 될까?--
  • 2012년형 중장기 Java 스터디!

누가?

  • 튜터: 변형진
  • 튜티: 김태진, 김준석, 권순의, 서민관, 서영주, 권영기
    • 누구나 참여 가능합니다. 각자 이름을 써주세요.
    • 최소 Java 기초 문법 이해 및 학부 2학년 1학기 커리큘럼 수준의 전산지식 필요
    • 이론과 실무 지식을 모두 다룰 예정이므로 Java 경험이 많을 수록 좋습니다.
    • 우앙 재밌겠다 - 서지혜
    • 흥미로워서 참여하고 싶지만 아직 서울에 갈만한 형편이 안되네요.. 흥미로운 주제를 다루시는것 같던데. - 안혁준

언제?

  • 토요일 오후 1시부터

어디서?

  • 제2공학과 6층 ZeroPage학회실 또는 컴퓨터공학부실습실

무엇을?

  • 학교에서 배울 수 없는 Java에 대한 좀더 깊고 다양한 이야기
  • 다룰 법한 주제
    • Java Technology와 생태계
    • Java 개발 환경 및 빌드 프로세스
    • Java 프로그래밍 언어
    • Java 코딩 컨벤션
    • 클래스와 객체
    • Annotations 및 Generics
    • 예외 처리
    • Java API와 주요 기술
    • 컬렉션 프레임워크와 동시성 제어
    • Servlet과 Servlet 컨테이너
    • Java 런타임과 리플렉션
    • 입출력과 네트워크
    • 프레임워크와 아키텍처
      • MVC와 영속화 계층(DB)
    • 주요 오픈 소스 라이브러리
    • Java 개발 방법론
    • 객체지향 프로그래밍
      • 리팩터링
      • 디자인 패턴
    • 테스트 주도 개발
      • 유닛 테스트
      • Mock 프레임워크
    • Android 플랫폼
    • 등등…

어떻게?

  • 세미나
  • 라이브 코딩
  • 실습
  • 참고도서
    1. Effective Java Second Edition by Josh Bloch

왜?

  • --작은 자바의 작은 배때지에 칼빵을 놔주기 위해…?--

변형진

  • 현업 Java 개발자도 놓치기 쉬운 문제들을 짚어보고, 올바른 Java 프로그램을 빠르고 깔끔하게 구현하는데 필요한 중급 수준의 지식을 전달하기 위해
  • Java를 중점적으로 다루지만, Java에 한정되지 않은 폭넓은 컴퓨터공학적 이해를 바탕으로 사고하도록 하기 위해
  • 그동안 설계와 구현에 관한 일반론을 위주로 세미나를 진행해왔기에, 이번에는 좀더 practical하고 pragmatic한 지식을 전달하는데 비중을 두고자 함.
  • 나 스스로도 알지만 불충분했던 지식이나 아직 어렴풋한 지식을 설명하면서 함께 공부하고 배우기 위해

김태진

  • 학교에서 배우기 힘든 다양한 지식(자바뿐만 아니고)들을 접해보고, 활용할 수 있기위해
  • 아직 내가 구현하는게 불가능한 것을 가능하게 하는 것부터, 좀 더 '잘' 구현하는게 가능한 영역까지 그 폭을 넓히기 위해
  • 어디가서 자바로 개발 좀 제대로 해봤냐라고 물어볼때, 확실히 '네'라고 대답할 수 있기 위해
  • 병특을 위한 중장기 프로젝트(?)
  • "내가 아무것도 모른 상태에서 1학년 1년간 배울때처럼 그때 그 마음으로 많은 것을 배우기 위해" - 배움에 이유가 있는가.

서영주

  • 자바를 좀 대충 배운 감이 있어서 자바에 대해서 조금 더 확실히 알고 학교에서 가르쳐주는 것 외의 자바에 관한 지식을 조금 더 배우고 싶어서.
  • 언어에 관한 것 뿐만 아니라 유용한 라이브러리, 자바 개발 환경 등 개발을 더 빠르고 편리하게 할 수 있는 방법을 배우기 위해서.
  • 유닛테스트, mock 프레임워크 사용 등의 부분에 대한 실제 사용 예를 잘 알기 위해

권순의

  • 학교에서 배운 자바보다 더 심도있는 걸 하고 싶었는데 능력이 안 되서 못했기 때문에
  • 보다 더 사고를 넓히기 위해
  • 공부란 것은 하면 할 수록 할게 많기 때문..

서민관

  • 단순히 자바 언어에 대해서가 아니라 더 다양한 주제를 다루는 스터디이기 때문에 흥미가 있어서.
  • 토요일에 할 수 있는 활동들 중에서 시간 대 성능 비가 월등하니까 듣지 않을 이유가 없다.
  • TDD로 코드를 짜 보려다 실패해서 -_-;;; 어떻게 TDD로 코딩을 해야 하는지, 어떻게 리팩토링을 해야 하는지 듣고 싶어서.

권영기

  • 자바 언어에 대해서 심도있게 공부해보고 싶어서.
  • 나의 시야를 넓히고 싶어서.
  • 토요일을 알차게 보내기 위해서.
  --좋은 선행학습이다..--

규칙

진행

2012년 5월 5일

  • 오리엔테이션
    • 튜터가 생각한 이 스터디의 "무엇을?", "어떻게?", "왜?"를 자세히 소개하고, 튜티들이 원하는 "무엇을?", "어떻게?"에 대한 이야기를 나눴습니다.
    • 스터디 시간이 참여자들 각각에게 원하지 않는 시간 낭비가 되지 않도록, 언제라도 또다른 의견과 질문을 환영합니다.
  • "왜?"에 각자 서브섹션을 나누어 자신이 이 스터디를 통해 원하는 것을 적고, 스스로에게 동기부여를 해봅시다.

후기

2012년 5월 12일

  • SpringSource Tool Suite(Eclipse IDE)의 기본 설정과 프로젝트 설정에 필요한 기본적인 정보를 설명했습니다.
  • Eclipse JDT의 빌드 과정을 알아보고 Maven에서 라이브러리 의존성을 추가해보았습니다.
  • 클래스와 그 멤버에 적용하는 기본 modifier들의 개념 및 용법을 다뤘습니다.
    • public, protected, private, (none)
    • abstract, final, static

후기

  • static modifier에 대해 애매하게 알고 있었는데 자세하게 설명해주셔서 좋았습니다. static은 타입을 통해서 부르는거라거나 원래 모든 함수가 static인데 객체지향의 다형성을 위해 static이 아닌 함수가 생긴거라는 설명은 신기했었습니다. object.method(message) -> MyType::method(object, method) 부분이 oop 실제 구현의 기본이라는 부분은 잊어버리지 않고 잘 기억해둬야겠습니다. 근데 파이썬에서 메소드 작성시 (self)가 들어가는 것도 이것과 관련이 있는건가요? -서영주

2012년 5월 19일

  • Singleton 패턴과 lazy initialization의 필요성에 대해 이야기했습니다.
    • 멀티스레드 환경에서 synchronized modifier를 사용한 동기화에 대해 공부했습니다.
    • 동기화 부하를 피하기 위한 DCL 패턴의 문제점을 살펴보고 Java 5 이후에서 volatile modifier로 해결할 수 있음을 배웠습니다.
  • Serializable 인터페이스와 ObjectOutput, ObjectInput을 사용한 직렬화, 역직렬화에 대해 공부했습니다.
    • transient modifier는 VM의 자동 직렬화 과정에서 특정 속성을 제외할 수 있고, Externalizable 인터페이스를 구현하면 직렬화, 역직렬화 방식을 직접 정의할 수 있음을 보았습니다.
  • JNI라는 기법을 사용해 네이티브 라이브러리를 연결하여 함수를 호출할 수 있음을 배웠습니다.
    • native modifier로 함수의 인터페이스를 선언할 수 있고, 마샬링, 언마샬링 과정에서 성능 손실이 있을 수 있음을 이야기했습니다.
  • 불변객체의 필요성과 조건에 대해 알아보았습니다.
    • 대표적인 불변객체인 String 클래스가 내부적으로 어떻게 구현되고, 어떻게 불변성을 유지하는 지를 살펴보았습니다.
    • 다양한 String 객체의 활용 과정에서 객체들의 동일성과 동등성을 알아보았습니다.

후기

  • String객체라니..! 자바 스트링은 편하면서도 불편했는데 뭔가 그 이유를 들을 수 있었을 법한 주제네요..-김태진
  • c++에서 상호배제 관련으로 mutex나 critical section같은거 엄청 배웠었는데 자바에서는 synchronized를 이용해서 쉽게 처리할 수 있다는게 신기했습니다. os 수업 들은지 오래 됐는데 멀티프로세스와 멀티스레드 수업을 다시 들으니까 설명을 참 잘 해주셔서 좋았습니다. 함수에만 붙일 수 있는게 아니고 보호자원을 가진 객체를 이용한 synchronized(this){ ... } 같은 부분은 나중에 스레드를 쓸 경우에 참고가 될 것 같습니다. 그리고 인터페이스와 리플렉션을 이용한 초기화를 보니 생각을 잘 하면 구체클래스가 코드에 안드러나게 할 수 있다는 점도 볼만했습니다. -서영주

2012년활동지도, 스터디분류