프로그래밍 언어/JAVA
-
Java의 변천사, 추가된 기능은 무엇일까?프로그래밍 언어/JAVA 2022. 10. 2. 23:31
우리 회사는 최신 기술, 버젼 업데이트에 대해 우호적으로 반응하고 우리에게 좋은 인사이트를 줄 수 있는 것이라면 적용하는 편이다. 내가 회사에 입사했을 때에는 Javs SDK11버전을 사용 중이였고 17버전이 나온지 얼마 안 된 시기였다. 그러고 입사 한 달쯤 되었을 때에 17버전를 적용했다. 내가 Java17버전을 사용 중에 있지만 보통 흔히 java서적이나 강의에서 접하는 java8버전과 비교하였을 때에 어떠한 피쳐가 추가되었는지, 쓸만한 기능인지는 알아보지 못했기에 이번 기회에 알아보고 정리해보고자 한다. 1. Text Blocks 기존에 한 줄의 텍스트가 아닌 여러 줄의 텍스트를 작성할 때에는 아래와 같이 작성해야했다. String text = "{\n" + " \"name\": \"John Do..
-
[JAVA] 인터페이스 default method (java 8)프로그래밍 언어/JAVA 2022. 9. 4. 21:52
오늘은 java 8에서 추가된 기능 중 하나인 인터페이스에서의 default method에 대해 정리해보려고 한다. 현재 java의 최신 LTS버전은 17이지만 8버전 때의 업데이트에서는 다양한 기능들이 추가되었었고 java의 기본적인 공부를 할 때에 8버전 때에 추가된 기능들을 하나하나 알아보는 것도 중요하다고 생각한다. 왜 default method가 추가되었을까? - 오라클에서 제공하는 java 공식문서에서는 아래와 같은 예시를 들며 default method의 필요성을 설명했다. computer-controlled car 제조업체들이 자동차에 비행과 같은 새로운 기능을 추가한다면 어떠할까? computer-controlled car 제조업체들은 다른 회사가 자사의 소프트웨어를 하늘을 나는 자동차에..
-
함수형 인터페이스프로그래밍 언어/JAVA 2022. 6. 26. 01:32
함수형 인터페이스 함수형 인터페이스는 java 8이전부터 있던 기능?(기능이라고 말할 것까지는 아니지만...)이지만 특정한 조건을 만족시키는 인터페이스를 함수형 인터페이스라고 한다. 그 전에, 인터페이스가 무엇인지 간단하게 정리해보고 넘어가자. 인터페이스(Interface)란, 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. 일반적인 부모 클래스와의 다른점은 인터페이스는 인터페이스의 메소드를 반드시 구현해야 하는 "강제성"을 갖는다. 추상 클래스와의 다른점은 추상 클래스는 extends 키워드를 사용하여 상속하며, 다중 상속은 불가능합니다. 반면 인터페이스는 implements 키워드를 사용하여 상속하며, 다중 상속이..
-
[JAVA] public static void main (String[] args) 파헤치기프로그래밍 언어/JAVA 2022. 1. 21. 22:40
오늘부터 회사에서 사용하는 주 언어인 java를 공부하기 시작했다. java를 처음 공부하는 것은 아니지만 그래도 다시 복습하는 느낌과 하나하나 되짚어보기 위해 공부를 하고 있다. 공부에 참고하고 있는 것은 유튜브에서 무료로 제공하는 남궁성님의 강의이다. https://www.youtube.com/playlist?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 자바의 정석 기초편(2020최신) 최고의 자바강좌를 무료로 들을 수 있습니다. 어떤 유료강좌보다도 낫습니다. www.youtube.com 오늘 배우면서 가장 많이 사용한 public static void main (String[] args)를 파헤쳐보면서 각각 무엇을 의미하는지 알아보려고 한다. 먼저, public은 무엇일까..
-
[스터디 15주차] 람다식프로그래밍 언어/JAVA 2021. 7. 28. 16:14
더보기 목표: 자바의 람다식에 대해 학습 1. 람다식 사용법 람다식은 메소드를 하나의 '식(expression)' 으로 표현한 것 익명 함수(anonymous function)를 생성하기 위한 식이다. 람다식을 사용하면 코드가 간결해지고 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있는 장점을 가진다. 더보기 익명함수란 말그대로 함수의 이름이 없는 함수다. 익명함수들은 공통으로 일급객체(First Class citizen)라는 특징을 가지고 있다. 일급객체란 다음과 같은 것들이 가능한 객체를 의미한다. - 변수나 데이터 구조 안에 담을 수 있다. - 파라미터로 전달 할 수 있다. - 반환값으로 사용할 수 있다. - 할당에 사용된 이름과 무관하게 고유한 구별이 가능하다. 람다식을 사..
-
[스터디 14주차] 제네릭프로그래밍 언어/JAVA 2021. 7. 24. 16:52
더보기 목표: 자바의 제네릭에 대해 학습 1. 제네릭 사용법 제네릭은 Java 5부터 추가된 타입으로 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 해준다. 제네릭은 클래스와 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용할 수 있도록 한다. 그러면 제네릭을 사용하면 어떠한 장점이 있을까? - 컴파일 시 강한 타입 체크를 할 수 있다. 컴파일 시에 미리 타입을 강하게 체크해 사전에 에러를 방지해준다. - 타입 변환을 제거한다. 제네릭을 사용한 경우와 사용하지 않은 경우를 코드를 보며 이해해보자. List list = new ArrayList(); list.add("hello"); String str = (String) list.get(0); 제네릭을 사용하지 않은 위 코드를..
-
[스터디 13주차] I/O프로그래밍 언어/JAVA 2021. 7. 20. 17:51
더보기 목표: 자바의 Input과 Ontput에 대해 학습 1. 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O 스트림(stream)은 어느 한 쪽에서 다른 쪽으로 데이터를 전달할수 있도록 해주는 연결 통로같은 것이다. 스트림은 단방향통신만 가능하기때문에 입력과 출력을 동시에 처리하기 위해서는 입력을 위한 스트림과 출력을 위한 스트림, 2개의 스트림이 있어야한다. 채널(Channel)은 스트림과 달리 양방향으로 입력과 출력이 가능하다. 버퍼(buffer)는 byte, char, int 등 기본 데이터 타입을 저장할 수 있는 저장소로서, 배열과 마찬가지로 제한된 크기에 순서대로 데이터를 저장한다. 버퍼는 데이터를 저장하기 위한 것이지만 실제로 버퍼가 사용되는 것은 ..
-
[스터디 12주차] 멀티쓰레드 프로그래밍프로그래밍 언어/JAVA 2021. 7. 14. 13:48
더보기 목표: 자바의 멀티쓰레드 프로그래밍에 대해 학습 0. 들어가기 전 오늘의 큰 주제인 멀티쓰레드는 무엇일까? 멀티쓰레드를 알아보기 전에 멀티태스킹(multitasking)이라는 개념을 알아두는 것이 좋다. 멀티태스킹은 두 가지 이상의 작업을 동시에 처리하는 것으로 예를 들어 우리가 웹 브라우저를 통해 서칭을 하면서 뮤직 플레이어를 노래를 들을 수도 있고 PC카카오톡에서 알림도 받을 수 있다. 위의 예시는 정확히 말하면 멀티태스킹 중에 멀티프로세스라는 표현이 더 맞을 수 있다. 그러면 다른 예시를 알아보자. 요즘은 잘 보기 힘들지만 브라우저를 통해 블로그에 들어가면 글을 보는 것과 함께 BGM, 음악이 함께 재생되는 것이 있었다. 혹은 카카오톡같은 메신저 애플리케이션은 메시지를 주고받을 뿐만 아니라 ..