자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ...

42
자바 개발 시작하기 (10 주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ ) 2012. 1. 18 DEVELOPMENT #2 이덕곤

Upload: dk-lee

Post on 12-Nov-2014

942 views

Category:

Technology


0 download

DESCRIPTION

Java web development 10 (draft) 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
 2012. 1. 18 벌써 2년도 넘은 자료지만 그래도 필요하신분이 있을지 몰라서... (지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ) 사실 마지막 주차는 발표자료 마무리가 부족하다. 그 당시 뭔가 급한일이 있어서;;; (일꺼라 추측) 지금와서 문서에 손을 대기는 좀 그래서 부족하지만 수정없이 배포한다.

TRANSCRIPT

Page 1: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

자바 웹 개발 시작하기(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

2012. 1. 18

DEVELOPMENT #2

이덕곤

Page 2: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

돌아보며▪ 우리가 목표했던 것은 얼마나 달성되었나요?!

▪ 자바를 사용한 웹 개발 기본학습"

▪ 스프링 중심, 실무 중심으로 기획!

▪ 2011년 마지막 주에 실전 프로젝트로 마무리 -> 삑!!

▪ 비 서버사이드 개발 인력의 서버사이드 이해"

▪ 개발의 심화학습을 혼자 진행 할 수 있도록!▪ 현재 스타플 개발에 사용되고 있는 환경과 프레임워크 등을이해하여 개발 능력 향상!

▪ 9주차까지 한번도 빠짐없이 수업이 진행!!!

▪ 그 동안 열심히 참여해 주셔서 감사합니다!!!

Page 3: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

함께 공부한 것들(1)▪ 웹 개발 시작!▪ 자바 웹 개발 환경 설정 (너무 간단해서 놀라버린…)!

▪ Java, Model1, Model2, web.xml, Servlet, JSP!

▪ 게시판 커뮤니티 만들기 (웹 개발의 시작과 끝 : 게시판)!!

▪ 인터넷이란? (통신, 네트워크)!

▪ 서버와 클라이언트, 요청에서 응답까지(GET -> 200)!

▪ TCP/IP, OSI 7 Layer, LAN, UDP, 이더넷, 허브, 라우터!

▪ 프로토콜(규약) : HTTP, DNS, Telnet, E-Mail, FTP…

Page 4: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

함께 공부한 것들(2)▪ 스프링 프레임워크 (EJB는 왜 몰락했나?)!

▪ DI(IoC), AOP, 경량, POJO (그럴싸함의 중요함)!!

▪ 자바로 구현해보는 웹 관련 기술!▪ MVC (사용자는 변덕쟁이다. 자기가 뭘 원하는지도 모른다.

분리하여 개발한다. 모든 것은 변하기 때문에…)!

▪ 데이터베이스, JPA, 하이버네이트, SQL (CRUD)!

▪ RESTful, 쿠키와 세션, 로그인!

▪ 유효성검사, 국제화, 예외처리, 단위테스트!

▪ RSS뷰, 명세서… 기타 등등

Page 5: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

마지막 시간▪ 라이브러리 업데이트!

▪ 스프링 3.0.6 -> 3.1.0, 하이버네이트 3.6.8 -> 4.0.1!

▪ JPA로의 이동!▪ EJB3에 포함된 표준(335)기술!

▪ 표준을 사용, 포장을 줄이며 의존성을 줄여나가기!

▪ 게시판 페이지 나누기!

▪ 지금까지 우리가 한 것 돌아보기!

▪ 웹과 우리는? 나아가야 할 방향 생각해보기

Page 6: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

Spring Framework 3.1▪ 주요 변경 사항 (조쉬 롱 : 아래 마지막 링크 참고)!

▪ 포괄적인 자바 기반 애플리케이션 구성 !▪ 신규 캐시 추상화 !▪ 운영 환경 지원, 빈 정의 프로파일과 계층형 프로퍼티 출처 관리 !▪ 하이버네이트 4 지원 !▪ 자바 7 fork/join과 JDBC 4.1 지원 !

▪ 참고 페이지!▪ http://static.springsource.org/spring/docs/3.1.x/changelog.txt!

▪ http://blog.outsider.ne.kr/732!

▪ http://www.ksug.org/144

Page 7: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

hibernate 4.0▪ 주요 변경 사항 (아래 링크 참고)!

▪ 많은 변경사항이 있음 (DB도 너무 공부할 것이 많음)!

▪ 멀티 테넌트(Multi-Tenant : 다중역할) 지원!▪ 단일 코드셋, 애플리케이션과 데이터의 파티셔닝, 공통의 애플리케이션 서비스, 코드 수정 없는 커스터마이징!

▪ ServiceRegistry 도입, SessionFactory 정리, i18n 등!

▪ 참고 페이지!▪ http://relation.to/Bloggers/HibernateCore40IsFinal!▪ https://community.jboss.org/wiki/HibernateCoreMigrationGuide40!

▪ http://jowon.blogspot.com/2010/05/saas-multi-tenancy.html

Page 8: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

라이브러리 변경하기▪ 스프링과 하이버네이트 라이브러리를 최신화!

▪ 다운로드!▪ http://www.springsource.org/spring-framework!

▪ http://www.hibernate.org/downloads

Page 9: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

스프링 환경설정▪ HandlerAdapter 변경!▪ org.springframework.web.servlet.mvc.annotation.Anno

tationMethodHandlerAdapter 에서org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter 로 변화!

▪ <mvc:annotation-driven> 기능 확장!▪ 그리고 버그 (새로운 것을 받아드리기 어려운 이유)!!

▪ http://millky.com/home/byuri/10000643

Page 10: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

하이버네이트 환경설정

새로운 설정 이전 설정

Page 11: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

스프링의 하이버네이트 4.0 지원▪ EntityBeanFinderFactoryBean가 필요 없다!

▪ annotatedClasses!

▪ 지금까지 Entity를 스캔해주던 유틸리티!

▪ LocalContainerEntityManagerFactoryBean의packagesToScan을 사용할 수 있음!

▪ HibernateTemplate이 없어졌다!▪ 스프링 3.1에는 하이버네이트 4.0을 위한

template, factory 같은 지원 클래스가 없다!

▪ 자바 표준인 JPA(2.0) 구현한 EntityManager 사용

Page 12: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

JPA(Java Persistence API)▪ EJB2.0의 Entity Bean이 너무 무거워서(의존도등)

Hibernate같은 ORM기술이 널리 활용되자JSR-220(Enterprise JavaBeans 3.0)을 들고나옴!

▪ EJB3.0에 포함된 자바 표준으로 하이버네이트도EntityManager를 통하여 JPA의 구현체가 됨!

▪ 참고!▪ http://ko.wikipedia.org/wiki/JPA!

▪ http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html!

▪ http://blog.naver.com/chocolleto/30087402615!

▪ http://www.javajigi.net/pages/viewpage.action?pageId=5924

Page 13: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

JPA로 개발하기▪ EntityManager, CriteriaBuilder, CriteriaQuery!▪ JPA 2.0 표준으로 개발 : 의존성이 줄어듬!▪ 스프링 말고 다른 프레임워크를 사용해야 한다면?

EntityManager HibernateTemplate

Page 14: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

페이지 나누기▪ 우선 총 글 수를 가지고 온다!

▪ criteriaQuery.select(criteriaBuilder.count(criteriaQuery.from(Board.class)));!▪ Long count = entityManager.createQuery(criteriaQuery).getSingleResult();!

▪ public PageNavigator (int nowPage, int totalRow, int pageSize, int navSize)!▪ 전체 페이지 수 = 총 글 수 / 페이지 사이즈!

▪ startRow번 게시물 부터 pageSize만큼 가지고옴!▪ entityManager.createQuery(criteriaQuery)

.setFirstResult(startRow).setMaxResults(pageSize);!▪ http://eunicon.tistory.com/81!

▪ http://code.google.com/p/doitframe/source/browse/trunk/doit-framework/src/doit/framework/util/PageNavigator.java

Page 15: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

/WEB-INF/tags/pagingTag.tag<%@ tag language="java" body-content="empty" pageEncoding="UTF-8"%>!<%@ attribute name="pagingAttribute" rtexprvalue="true" required="true" type="java.lang.Object"%>!<c:if test="${pagingAttribute.hasPrevPage}">! <a href="${_URL}?page=${pagingAttribute.blockStartPage - 1}">◀</a>!

</c:if>!<c:forEach var="page" begin="${pagingAttribute.blockStartPage}" end="${pagingAttribute.blockEndPage}">! <c:if test="${page == pagingAttribute.nowPage}">! <a style="font-weight: bold;" href="${_URL}?page=${page}">${page}</a>! </c:if>! <c:if test="${page != pagingAttribute.nowPage}">! <a href="${_URL}?page=${page}">${page}</a>! </c:if>!</c:forEach>

Page 16: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

여기서 마무리…▪ 기본적인 커뮤니티를 완성했습니다!▪ 아직 많은 부분 부족하지만…!

▪ 이제 자바 웹 개발의 기본적인 이해가 되셨나요?

Page 17: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

그리고 시작하기 : 스타플 5는?▪ 최신기술 도입으로 성능과 개발효율 향상"▪ 기타 도입 고민해야 할 기술도 많다 (O-Auth, NoSQL)

개발 : Eclipse 3.7.1!(SVN : 버전관리, Log4j : 로그)!

!!!!!!!!

Java SE 7 update X!Java EE 6!

!!!!!!!!!

!!!!!!!

Tomcat 7.0.XX (Servlet 3.0)

Spring MVC : WEB!(컨트롤 부분)

3.0 DAO!(모델 부분)

MySQL Connector For Java 5.1.XX

JSP 2.2(JSTL, EL)!(뷰 부분)

!5.5.XX

POJO Bean : Domain, Service!(비즈니스 부분)

Page 18: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

위콘, 스타플과 오픈소스▪ 2007년 시작 스타플 초기부터 개발에 사용!

▪ 스프링 프레임워크!▪ 최초 2.0으로 개발 시작!

▪ 2.5를 거치고(어노테이션) 현재 3.0(RESTful) 사용 중!

▪ 스타플5에서는 3.1로 업데이트 예정!

!

▪ 잘 사용하는 것도 개발자에게는 즐거운 일이다.!

▪ 모든 것은 사람이 한 일. 감사합니다. 한마디

Page 19: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

지금까지 우리가 한 것▪ 자바라는 기술의 극히 일부분 ▶!

▪ 웹이란 생태계의 일부분"!▪ 앞으로 공부해야 할 부분이 너무 많지만…그 모든 기술이 필요한지도 생각해 봐야 함

Page 20: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

이제 겨우 시작…▪ 뭔가 많이 했지만…!

▪ 이제 단지자바로 웹을 개발할 수 있는오만가지 방법 중 한가지를 배우셨을 뿐 입니다.!

▪ 개발도 아니고 웹도 아닌단지 웹 개발이란 곳에서도 사실 우리는 아직알고 있는 것이 없습니다.

Page 21: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

더 생각해볼 문제▪ 왜 개발을 하나?!▪ 그림은 왜 그리나?!

▪ 소설은 왜 쓰나?!

▪ 작곡은 왜 하나?!

▪ 창조적인 작업? 창조?!

▪ 왜 하는 것일까?!

!

▪ 왜 사나? 그냥, 재미로?!

Page 22: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

노스페이스▪ 교복 메이커 중 하나!

▪ 영원무역!▪ '노스페이스'의 주문자상표부착(OEM) 제조업체!

▪ 자체 브랜드로 같은 품질 판매!

▪ 고어텍스 좋긴 하지만…!

!

▪ 소비, 권력, 보상심리!

▪ 노스페이스 계급표

Page 23: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

우리가 살아가는데 필요한 것?▪ 밥!▪ 에어컨!

▪ 침대!

▪ 최신형 스마트폰!

▪ 노스페이스 점퍼!

▪돈!!!

▪ 생각? 추억? 기억… : 기억의 중요성 (내 기억의 확장)

삶은? =

Page 24: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

컴퓨터▪ 그 도구로의 시작!

▪ 만지면 반응한다!

▪ 계산기에서 시작!

▪ 사람을 보조하기 위해!

▪ 사람과 컴퓨터의 다른 점은?!

!

!

▪ 직감, 이성, 판단, 자존

Page 25: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

Ghost in the Shell (1995)

"바트, 잊지 말아줘 네가 넷트(NET)에 접속할 때, 나는 반드시 네 곁에 있어"

Page 26: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

자기 자신을 찾아가는 길▪ 당신의 기억에 내가 없다면 나는 누구인가?!

▪ 나는 누구인가? 나는 왜 살아가나? 목적은 있나?!!

▪ 자아를 찾아가기 (단기, 중기, 장기목적)!▪ 자존감 : 거울에 비친 모습 그대로를 인정 장점을 찾아서 존중하기!

▪ 자존심 : 자존감의 여부와 상관 없이 타인에게 지기를 싫어하는 마음타인을 이기는 것으로 스스로를 존중!

▪ 자만심 : 있는 그대로 평가하지 못하고 스스로 과대평가 하거나, 계획만 가지고 있는 상태를 현실과 착각하여 떠벌리고 다니는 행동 또는 마음!

!▪ 인간 : 생존 > 사회화 > 즐기기

Page 27: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

혼자 하면 재미 없어요~▪ 온라인 영향력!

▪ 또 다른 과시의 수단!

▪ 연결 되고 싶어한다!

▪ 세상에 나 혼자라면?!

▪ 강아지와의 교감!

▪ 반응에 민감함

Page 28: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

▪ 휴대폰, 휴대, 좋은것 빠른업글!

▪ 사이클이 빠른 이유!

▪ 과시, 소모품!

▪ 집은 들고 다닐 수 없다

Page 30: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

서비스▪ 자아를 찾게 만들어주는?!

!

▪ 타겟이 사용자가 아니다!▪ Target -> 사용자!

▪ For -> contumer!

!

▪ 누구를 위하여 종을 울리나!▪ 헤밍웨이(노인과 바다)

Page 31: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

핵심은 어디에?▪ 엘지의 LCD + 삼성의 메모리 + …

= 아이폰!

▪ 핵심은 IOS 라는 말도 있지만…!▪ IOS도 베이스는 유닉스!

▪ 그리고 여러 유틸리티들!!

▪ 소프트웨어가 핵심?!

!

▪ 결론은! 플랫폼, UX

Page 32: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

플랫폼(Platform) = 멍석▪ 그 자체가 최종 결과물이 아니라 Service나

S/W가 만들어지는 재료나 환경을 제공하는 것

Page 33: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

기술을 넘어서기▪ 이미 기술은 풍부!

!

▪ 시장의 형성!

▪ 아름다움으로 승부하기

Page 34: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

▪ 표준!

▪ 업계표준!

▪ 수많은 표준!

▪ 수많은 도구

Page 35: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

▪ 은총알은 없다!

▪ 바퀴를 다시 만들 필요는 없다!

▪ 누군가는 이 문제를 겪었습니다.!

▪ 창조력, 아름답더라!

▪ 왜 오픈소스를 만드나?!

▪ 공유와 참여

Page 36: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

▪ 오픈API!

▪ 매쉬업!

▪ 참여 개방!

▪ 클라우드!

▪ 빅 데이터!

▪ 대용량 분석

Page 37: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

더 공부해야 할 사항▪ 설정도 @으로!

▪ Maven!

▪ UML!

▪ NoSQL!

▪ 하둡, 맵 리듀스!

▪ 반복반복반복 : 의도된

Page 38: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

다음에 다시 만나요!▪ 명세서 발표회!

▪ 작품 발표회

Page 39: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

잊지 말아야 할 것▪ "The power of the web is in its universality.

Access by everyone regardless of disability is an essential aspect." - Tim Berners-Lee!!

▪ "웹(WWW)의 힘은 보편성에 있다. 불리한 조건에 관계없이 누구나 접근하는 것은 웹의 필수적인 측면이다.“ - 팀 버너스 리 (인터넷의 아버지: URL, HTTP, HTML 설계)

Page 40: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

수고하셨습니다.▪ 마지막!

▪ 새로운 시작!!

▪ 우리도 통해야 합니다.!

▪ 스타플로 통해야 합니다.!!

▪ 플렛폼이 되는 그날까지…!

▪ 위콘 파이팅!

Page 41: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

뒷풀이 장소▪ 장소!

▪ 약도

Page 42: 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)