Java 19

2023/03/26 - 객체지향 개념 및 UML,CBD,SOA

- 객체 지향 프로그래밍 언어에 대해 어떻게 생각하나? : 객체 지향 프로그래밍 언어란 객체를 생성하고 객체를 사용하는 프로그래밍 언어입니다. 이전의 프로그래밍 언어들 보다 더 기계가 아닌 현실세계 즉 인간에 초점을 맞추어 개발자들의 사고방식을 프로그래밍에 접목시켜 개발을 더욱 쉽게 만들어 주었다고 생각합니다. 또한 객체지향 프로그래밍을 하면 더 유연하고 코드의 재사용을 극대화 시킬 수 있다는 장점또한 있습니다. - 객체지향에서 객체는 무슨 기준으로 나누나? : 먼저 객체지향에서의 객체는 책임을 기준으로 나누어지고, 한 객체는 하나의 책임을 가지게 됩니다. 하지만 개발자가 인지하고 사고하는 방식에 따라 책임의 기준이 달라지므로 정확한 기준점은 없다고 생각합니다. - 자바 언어에서는 객체 지향 프로그래밍을..

백엔드 멘토링 2023.04.07

2023/03/28 - 추상클래스와 인터페이스의 공통점과 차이

* 추상클래스와 인터페이스의 공통점과 차이* - 먼저 추상클래스와 인터페이스는 가지고 있는 추상 메서드를 구현하도록 강제하고, 인스턴스화가 불가능하다는 공통점을 가지고 있습니다. 하지만, 추상클래스는 확장의 개념으로 extends를 사용하여 자신의 기능을 자식들에게 물려주는 방식이라면, 인터페이스는 설계의 개념으로 implements 를 사용하여 다중상속이 가능하고, 보다 더 추상화 정도가 높습니다. 정리하자면 추상 클래스 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우 추상 클래스를 상속 받을 클래스들이 공통으로 가지는 메소드와 필드가 많거나, public이외의 접근자(protected, private) 선언이 필요한 경우 non-static, non-final 필드 선언이 필요한 경우 (각 인스..

Java 공부 2023.03.29

2023/03/17 - 서블릿, CGI, JSP, MVC패턴

서블릿이란? 서블릿이란 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술이다. 즉 다시 말해, 자바로 웹을 만들기 위해 사용하는 기술로, 클라이언트의 요청을 처리하여 응답을 해주는 프로그램이다. (자바 소스코드 속에 HTML코드가 들어가는 형태) 서블릿들은 서블릿 컨테이너 내에서 관리되며 사용자의 요청에 맞는 서블릿을 사용하여 응답을 보내주는 형식. 서블릿 컨테이너의 역할 웹서버와의 통신 지원 서블릿 생명주기 관리 멀티쓰레드 지원 및 관리 선언적인 보안 관리 JSP란? JSP는 Java Sever Page의 약자로 서블릿과는 반대로 HTML코드 안에 자바 코드가 들어가 있는 형식이다. 이를 사용하여 웹 서버에서 처리되고 웹 브라우저로 전송..

백엔드 멘토링 2023.03.28

[JAVA] 프레임워크 vs 라이브러리 vs API

프레임 워크의 개념에 대해 공부할 때에는 항상 라이브러리의 개념 혹은 API의 개념과 비교하여 공부하는데 프레임 워크란? 프레임워크는 개발자가 Java 프로그래밍 언어로 어플리케이션을 만들기 위해 사용할 수 있도록 미리 만들어 놓은 코드들을 의미한다. 우리가 파워포인트를 만들때 미리 작성된 템플릿을 이용하듯이 프레임워크 또한 우리가 어플리케이션을 만들때 필요에 따라 사용할 수 있도록 미리 작성된 템플릿이라고 알면 된다. 예시로는 Spring Django Node.js 등이 있다. 라이브러리란? 라이브러리의 사전적 정의로는 컴퓨터 프로그램에서 빈번하게 사용되는 사전 컴파일된 루틴 또는 리소스의 집합이다. 이렇게 정리하면 이해가 되기 어려우니 쉽게 말하자면 우리가 직접 작성하는 class외에 빈번하게 사용되..

Java 공부 2023.03.03

[Java] Lazy Evaluation

Lazy Evaluation이란? Lazy Evaluation은 직역하면 "게으른 연산"이다. java에서의 Lazy Evaluationd은 불필요한 연산들을 피하기위해 연산을 지연시키는 것을 말한다. 불필요한 연산을 피한다라는 것의 이해를 돕기 위해 예시를 들어보자면, public class Lazy { public static void main(String[] args) { ArrayList list = new ArrayList(); for (int i = 0; i i i%2==0) .map(i -> i*10) .collect(Collectors.toList()) ); ..

Java 공부 2023.02.12

2023.02.03 - java 8 의 optional은 무조건 사용하는게 좋을까??

Optional이란 java 8 에서 처음 나온 기능으로 Null 값을 가질 가능성이 있는 객체를 감싸는 Wrapper 클래스 이다. Null을 직접 다룰 경우에는 위험성이 커 Optional 객체를 사용하면 더욱 효과적인 처리가 가능하며, 코드가 Null-Safe 해지고 가독성이 좋아지며, 코드가 안정적이 된다. 먼저 Null이 될 수 있는 객체를 직접 다룰 시에 발생할 수 있는 문제점이다. public String priceFormCar(Car car) { return car.getOwner().getPhoneNumber(); } 위와 같이 자동차(Car) 객체의 주인(owner)의 휴대폰 번호 (phoneNumber)를 가져오는 메소드가 있다고 할 때, 만약 Car car가 null값으로 들어올 경..

백엔드 멘토링 2023.02.03

2023.02.01 - Java 8의 특징

먼저 자바의 버전에 대해서 말하자면 Java는 6개월에 새로운 버전을 출시하며, 3년 마다 LTS 버전을 출시한다는 정책을 가지고 있다. 여기서 LTS란 Long Term Support의 약자로 유지보수를 지원하는 버전이다. 쉽게 말해 자바의 새로운 버전이 6개월 마다 나온다고 하더라도 LTS 버전은 여전히 지원이 된다는 얘기이다 현재까지 출시된 LTS 버전들은 다음과 같다. 2014년 java 8 2017년 java 11 2021년 java 17 javaSE9 이후로는 2년 마다 LTS 버전을 출시하기로 했다. 2014년에 나왔음에도 불구하고 현재까지도 java 8을 사용하는 업계들이 많기에 java 8 의 특징을 알아놓는 것은 매우 유용하다. java 8 의 특징 Lambda (람다) 표현식 java..

백엔드 멘토링 2023.02.02

[JAVA] Char to Integer : 문자를 정수로 변환하기

Char 형을 Int형으로 바꾸어주기 위해서는 대표적으로 2가지 방법이 있다 아스키 코드를 이용한 변환 자바 라이브러리 안의 Character.getNumericValue() 메소드 사용 나는 두가지 방법중 java 라이브러리 안의 Character.getNumericValue() 메소드 사용을 선호한다. 아스키 코드 (ASKII code)를 사용할 경우보다 코드가 더 깔끔하기 때문이다. Character.getNumericValue() 예시 char c = '1'; int n = Character.getNumericValue(c); System.out.println(n); // 결과: 1

Java 공부 2023.01.25

[JAVA] 26장 I/O - 정의 및 File 클래스 생성자

I/O란 I (Input) / O (Output) 의 약자이며 "아이오" 라고 읽는다. 주로 두가지 경우에 사용된다. 파일을 읽거나 저장할 일이 있을 경우 다른 서버나 디바이스로 보낼 일이 있을 경우 JVM을 기준으로 Input은 파일에 읽을때, Output은 파일을 이용해 데이터를 가져오거나 외부로 전송할때 사용한다. byte 기반의 데이터를 처리할때는 java.io 패키지 안의 Stream 클래스를 사용하고, char 기반의 문자열로 이루어진 문자열 파일을 처리 할 때에는 Reader, Writer 클래스를 사용한다. Java 1.4 이후에는 보다 빠르게 I/O를 처리하기 위해 Buffer와 Channel 기반으로 데이터를 처리하는 NIO (New I/O)가 등장 Java 7 에서는 기존의 단점들을 ..

Java 공부 2023.01.19