본문 바로가기

프로그래밍 기초/JAVA5

[Java8] Default Method와 Static method Default Method Java8 이전까지 Interface의 추상 메소드는 반드시 클래스에서 구현해야 하고, Interface에 새로운 메소드가 추가되면, 구현 클래스를 반드시 수정해야하는 바이너리 호환성에 이슈가 생길 수 있었다. 하지만 Java8 이후에는 Interface에 default method를 생성하게 되면 Interface 내에서 구현이 가능하고 구현 클래스에서 반드시 수정할 필요가 없다. 즉, default 메소드는 구현하는 모든 클래스들이 동일한 기능을 사용할 수 있도록 하면서 Interface에 변경이 생기더라도 바이너리 호환성을 유지할 수 있게 되었다. Static Method Interface에서 static method 사용이 가능해졌다. Factory method를 Int.. 2017. 6. 20.
[Java8] 함수형 프로그래밍 함수형 프로그래밍(Functional Programming)이란? 계산을 수학적 함수의 평가로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임이다.*Side Effect(부수효과)를 제거할 경우에 프로그램의 동작을 이해하고 예측하는 것이 훨씬 쉬워지기 때문에 Side Effect가 없는 Pure Function(순수 함수)들로만 작성 되어진다. *Side Effect(부수효과)란?- 변수를 수정하거나, 객체의 필드를 설정하는 것- 예외(Exception)를 던지거나 오류를 내면서 실행을 중단하는 것- 콘솔에 출력하거나 사용자의 입력을 읽어 들이는 것- 파일에 기록하거나 파일에서 읽어 들이는 것 함수형 프로그래밍(Functional Programming)의 기본 원리들 1. 변경 불가능한 값을 .. 2017. 6. 20.
쿠키와 세션, 캐시 웹 서버를 처음 개발하면서 부딪혔던 부분 중 하나가 로그인 유지이다.Http는 TCP처럼 연결지향형이 아니다. 웹 브라우저가 웹 서버에 요청을 보내면 웹 서버는 요청을 한 웹 브라우저에 요청한 정보를 보내주고 끝이다. 웹 페이지에 접속해 있는 동안 웹서버와 연결이 되어 있는 상태가 아니기 때문에 게임 서버처럼 스레드풀(Thead pool)을 만들어 접속한 클라이언트를 관리할 필요가 없다. 1. 쿠키와 세션 그렇다면 웹 서버는 어떻게 각각의 클라이언트를 관리할까?예를 들어 우리가 네이버나 구글 같은 페이지에 로그인을 했다고 치자. 우리는 아이디와 패스워드를 입력하고 서버로 보낼 것이며, 서버는 브라우저에서 보낸 아이디와 패스워드를 DB와 비교하여 로그인이 되었다고 브라우저에 알릴 것이다. 이번에는 메일을 .. 2016. 10. 26.
서블릿(Servlet)이란? 1. 서블릿(Servlet) JAVA를 이용하여 웹페이지를 동적으로 생성하는 서버측 프로그램이다.흔히들 CGI(Common Gateway Interface)라고들 하는데 CGI는 사용자의 입력을 받아서 동적인 HTML문서를 만드는 것이다. 웹 페이지에서 로그인 한 사용자에 따라 서로 다른 부분이 있다. 쉽게 예를 들어 로그인을 하고나면 ~님 안녕하세요 라고 띄울 때 ~부분은 사용자에 따라 달라지게 되는 데 이 부분이 동적인 부분으로 매번 다르게 생성되는 부분이다.Servlet이란 JAVA로 구현 된 CGI라고 생각하면 된다.jsp와 혼동될 수 있는데 jsp는 html문서에 java언어를 삽입한 것이고, servlet이란 java언어로 이루어진 웹프로그래밍 문서이다. 자세한 내용은 http://anster.. 2016. 10. 26.
interface와 abstract class의 차이 클래스는 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는 본문 중에 '추상 메소드'가 하나 이상 포함되는 경우를 말한다. 인터페이스는 모든 메소드가 추상 메소드인 경우 선언하는 경우가 많다. 추상 메소드라 함은 메소드의 선언부만 있고 본문이 없는 것을 말한다.예를 들어 abstract public void test( int a ); 이와 같이 선언만 하고 구현은 자식 클래스에서 하게 되는 방법이다.{} 부분을 body부분이라고 하는데 body부분에 내용이 없더라도 {}가 존재한다면 추상 메소드가 아니다.예를 들어 abstract public void test( int a ){ } 이러한 경우는 추상 메소드가 될 수 없다. 일반 클래스의 경우 상속받은 자식 클래스가 반드시 부모 클래스의 메소드를 '오버.. 2016. 10. 26.