<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>JAVA on Vanslog</title>
    <link>https://vanslog.io/ko/tags/java/</link>
    <description>Recent content in JAVA on Vanslog</description>
    <generator>Hugo</generator>
    <language>ko</language>
    <lastBuildDate>Thu, 21 Sep 2023 22:27:53 +0900</lastBuildDate>
    <atom:link href="https://vanslog.io/ko/tags/java/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Java 21 패턴 매칭 제대로 활용하기(with Scala)</title>
      <link>https://vanslog.io/ko/posts/language/java/java-21-pattern-matching-usecase-with-scala/</link>
      <pubDate>Thu, 21 Sep 2023 22:27:53 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/language/java/java-21-pattern-matching-usecase-with-scala/</guid>
      <description>고도로 발달된 Java는 Scala와 구분할 수 없다.</description>
    </item>
    <item>
      <title>Spring Data Meilisearch #3 - 통합테스트 환경 구축</title>
      <link>https://vanslog.io/ko/posts/project/spring-data-meilisearch/build-integration-test-environment/</link>
      <pubDate>Wed, 30 Aug 2023 14:03:48 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/project/spring-data-meilisearch/build-integration-test-environment/</guid>
      <description>Testcontainers와 JUnit 5 확장 모델로 통합 테스트 환경 구축하기</description>
    </item>
    <item>
      <title>Spring Data Meilisearch #2 - 어노테이션 기반 설정</title>
      <link>https://vanslog.io/ko/posts/project/spring-data-meilisearch/support-configuration-with-annotation/</link>
      <pubDate>Fri, 11 Aug 2023 00:06:13 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/project/spring-data-meilisearch/support-configuration-with-annotation/</guid>
      <description>스프링 라이브러리에서 어노테이션 기반 설정을 지원하는 방법</description>
    </item>
    <item>
      <title>Spring Data Meilisearch #1 - 네임스페이스 기반 설정</title>
      <link>https://vanslog.io/ko/posts/project/spring-data-meilisearch/support-configuration-with-namespace/</link>
      <pubDate>Wed, 26 Jul 2023 14:16:08 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/project/spring-data-meilisearch/support-configuration-with-namespace/</guid>
      <description>스프링 라이브러리에서 네임스페이스 기반 설정을 지원하는 방법</description>
    </item>
    <item>
      <title>Meilisearch를 위한 Testcontainers 라이브러리 개발기</title>
      <link>https://vanslog.io/ko/posts/project/testcontainers-meilisearch/</link>
      <pubDate>Fri, 21 Jul 2023 22:47:52 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/project/testcontainers-meilisearch/</guid>
      <description>Testcontainers Meilisearch를 소개하고, 개발하면서 느낀 점을 공유합니다.</description>
    </item>
    <item>
      <title>Spring Data Meilisearch #0 - 프로젝트 소개</title>
      <link>https://vanslog.io/ko/posts/project/spring-data-meilisearch/introduction/</link>
      <pubDate>Wed, 28 Jun 2023 13:48:31 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/project/spring-data-meilisearch/introduction/</guid>
      <description>Spring Data Meilisearch 프로젝트를 시작하게 된 계기와 목표에 대해 소개합니다.</description>
    </item>
    <item>
      <title>[Java] 왜 Stack 대신 Deque를 사용하는가?</title>
      <link>https://vanslog.io/ko/posts/language/java/why-use-deque-instead-of-stack/</link>
      <pubDate>Fri, 05 May 2023 22:30:19 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/language/java/why-use-deque-instead-of-stack/</guid>
      <description>&lt;h2 id=&#34;stack-대신-deque를-사용하라&#34;&gt;Stack 대신 Deque를 사용하라?&lt;/h2&gt;
&lt;p&gt;평소에 자바를 사용해 알고리즘 문제를 풀면서 &lt;code&gt;Stack&lt;/code&gt; 대신 &lt;code&gt;Deque&lt;/code&gt;를 사용하곤 했습니다.
구글링을 하다 우연히 &lt;code&gt;Stack&lt;/code&gt; 클래스 대신 &lt;code&gt;Deque&lt;/code&gt;를 사용하라는 글을 자주 마주한 것이 계기였습니다.&lt;/p&gt;
&lt;p&gt;하지만 &lt;code&gt;Deque&lt;/code&gt;를 사용해야 되는 이유에 대해 깊은 생각없이 막연히 사용하고 있던 것 같아,
이번 기회에 &lt;code&gt;Stack&lt;/code&gt;과 &lt;code&gt;Deque&lt;/code&gt;의 차이점을 자세히 알아보았습니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementations, which should be used in preference to this class. For example:&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Spring] 왜 스프링인가</title>
      <link>https://vanslog.io/ko/posts/web/spring/why-spring/</link>
      <pubDate>Thu, 21 Jul 2022 22:47:38 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/web/spring/why-spring/</guid>
      <description>&lt;p&gt;스프링은 엔터프라이즈 환경을 위한 &lt;code&gt;애플리케이션 프레임워크&lt;/code&gt;이며, 오늘날 자바 기반 웹 애플리케이션 개발의 표준입니다. 스프링을 완전히 이해하기 위해서는 이것의 &lt;code&gt;등장 배경&lt;/code&gt;을 알고 있을 필요가 있습니다.&lt;/p&gt;
&lt;p&gt;왜냐하면 스프링은 엔터프라이즈 애플리케이션 개발을 위한 &lt;code&gt;J2EE(Java 2 Platform, Enterprise Edition)&lt;/code&gt;의 문제점을 해결한 결과물이기 때문입니다. 스프링의 특징이나 장점들이 어떠한 배경 속에서 등장했는 지를 이해하면 더욱 스프링에 대한 이해가 높아질 수 있을 것입니다.&lt;/p&gt;
&lt;h2 id=&#34;j2ee&#34;&gt;J2EE&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;J2EE(Java 2 Platform, Enterprise Edition)&lt;/code&gt;는 엔터프라이즈 애플리케이션 개발을 위한 스펙의 집합입니다. 일반적으로 사용하는 자바인 &lt;code&gt;J2SE(Java 2 Platform, Standard Edition)&lt;/code&gt;를 확장하여 만들어 졌습니다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Java] 반복문을 파이프라인으로 바꿔라</title>
      <link>https://vanslog.io/ko/posts/language/java/refactoring-loops-to-collection-pipelines/</link>
      <pubDate>Mon, 19 Jul 2021 13:03:57 +0000</pubDate>
      <guid>https://vanslog.io/ko/posts/language/java/refactoring-loops-to-collection-pipelines/</guid>
      <description>자바8에서 등장한 스트림 언제사용하는 것이 좋은가?</description>
    </item>
    <item>
      <title>[Java] 기본 자료형과 참조 자료형</title>
      <link>https://vanslog.io/ko/posts/language/java/primitive-type-and-reference-type/</link>
      <pubDate>Fri, 16 Jul 2021 14:06:26 +0000</pubDate>
      <guid>https://vanslog.io/ko/posts/language/java/primitive-type-and-reference-type/</guid>
      <description>자바의 기본 자료형과 참조 자료형에 대해서 알아보자!</description>
    </item>
    <item>
      <title>[UML 2.0] 순차 다이어그램(Sequence Diagram)</title>
      <link>https://vanslog.io/ko/posts/cs/uml/sequence-diagram/</link>
      <pubDate>Sat, 23 Jan 2021 16:10:03 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/cs/uml/sequence-diagram/</guid>
      <description>객체들의 상호작용을 나타내는 다이어그램</description>
    </item>
    <item>
      <title>[UML 2.0] 컬레보레이션 다이어그램(Collaboration Diagram)</title>
      <link>https://vanslog.io/ko/posts/cs/uml/collaboration-diagram/</link>
      <pubDate>Sat, 16 Jan 2021 18:48:45 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/cs/uml/collaboration-diagram/</guid>
      <description>UML2.0에서 디자인 패턴을 표현하는 도구</description>
    </item>
    <item>
      <title>디자인 패턴이란?</title>
      <link>https://vanslog.io/ko/posts/cs/design-patterns/what-is-the-design-patterns/</link>
      <pubDate>Sat, 16 Jan 2021 10:52:57 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/cs/design-patterns/what-is-the-design-patterns/</guid>
      <description>좋은 객체지향 설계를 위한 디자인 패턴</description>
    </item>
    <item>
      <title>[OOP] 객체지향 설계 원칙: SOLID 원칙</title>
      <link>https://vanslog.io/ko/posts/cs/oop/solid-principle/</link>
      <pubDate>Sun, 10 Jan 2021 19:53:10 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/cs/oop/solid-principle/</guid>
      <description>객제지향 설계 원칙</description>
    </item>
    <item>
      <title>[OOP] 객체지향 프로그래밍(OOP) 특징</title>
      <link>https://vanslog.io/ko/posts/cs/oop/oop-features/</link>
      <pubDate>Sat, 09 Jan 2021 17:18:32 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/cs/oop/oop-features/</guid>
      <description>객체지향 프로그래밍(OOP)의 네가지 특징</description>
    </item>
    <item>
      <title>[UML 2.0] 클래스 다이어그램(Class Diagram)</title>
      <link>https://vanslog.io/ko/posts/cs/uml/class-diagram/</link>
      <pubDate>Fri, 08 Jan 2021 19:20:43 +0900</pubDate>
      <guid>https://vanslog.io/ko/posts/cs/uml/class-diagram/</guid>
      <description>&lt;h2 id=&#34;클래스란&#34;&gt;클래스란?&lt;/h2&gt;
&lt;p&gt;클래스는 동일한 속성과 행위를 수행하는 객체들의 집합이다. 예를 들어 소프트웨어를 전공중인 학생들의 공통점은 &lt;code&gt;소프트웨어를 전공한다&lt;/code&gt;는 사실과 &lt;code&gt;동일한 전공 수업&lt;/code&gt;을 듣는다는 점이다. 이러한 경우 &lt;code&gt;소프트웨어 전공 중인 학생&lt;/code&gt;은 실제 학생들의 클래스라고 말할 수 있다.&lt;/p&gt;
&lt;p&gt;클래스를 정의하는 또 다른 관점은 &lt;code&gt;인스턴스(객체)를 생성하는 설계도&lt;/code&gt;로 보는 것이다. 아래 소스코드는 소프트웨어를 전공하는 학생 클래스를 정의한 것이다. 클래스가 객체를 생성하는 설계도라는 관점에서 코드를 한 번 살펴보자&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Student&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;major&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;SW&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Student&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;study&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;객체 지향 모델링 수업을 수강합니다.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Student&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;student1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Student&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;학생1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Student&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;student2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Student&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;학생2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;student1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;study&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;student2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;study&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;위 코드를 통해서 같은 스펙을 가진 학생 객체가 두 개 생겨났다. 두 객체는 이름을 제외하면 모두 동일한 특성을 가진다. major 속성은 &lt;code&gt;SW&lt;/code&gt;로 동일하며 &lt;code&gt;study()&lt;/code&gt; 메소드를 실행하면 동일한 문장이 출력된다. 이것이 바로 클래스가 객체를 생성하는 설계도인 이유이다.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
