<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Java | 정진영의 포트폴리오</title><link>https://wjdwlsdud.github.io/en/tags/java/</link><atom:link href="https://wjdwlsdud.github.io/en/tags/java/index.xml" rel="self" type="application/rss+xml"/><description>Java</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 12 Oct 2025 00:00:00 +0000</lastBuildDate><image><url>https://wjdwlsdud.github.io/media/sharing.jpg</url><title>Java</title><link>https://wjdwlsdud.github.io/en/tags/java/</link></image><item><title>JAVA</title><link>https://wjdwlsdud.github.io/en/studying/java/</link><pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/studying/java/</guid><description>&lt;p&gt;I began this study not just to simply understand Java&amp;rsquo;s syntax and features, but to deeply explore why those features are necessary and how they can be applied in practice.&lt;/p&gt;
&lt;p&gt;The topics I have studied so far are as follows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Object Class&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Object class is the top-level parent of all classes. I studied the reasons why the Object class is necessary, the features it provides, and also learned about the concepts of identity vs. equality in Java through the equals() method.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Immutable Objects&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An immutable object is an object whose state cannot be changed after it is created. Many objects provided by Java—including String, wrapper classes, and date/time objects—are immutable. I studied why immutable objects are necessary and how to create them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;String Class&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The String class is used for handling character strings in Java. I studied not only the basic features of String objects but also the functional and performance differences between StringBuilder and String, as well as how Java optimizes the String class.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wrapper &amp;amp; Class Classes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I learned about the limitations of Java&amp;rsquo;s primitive types and studied the wrapper classes designed to overcome them. Additionally, I studied the Class class, which represents class information, the System class, which provides system information, and other frequently used classes like Math and Random.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enumerations (Enums)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Enums are an excellent feature that provides a high level of type safety. Rather than just learning the syntax, I studied the fundamental reasons why enums are necessary. I also tried implementing the &amp;ldquo;typesafe enum pattern&amp;rdquo; that was manually implemented in the days before enums existed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nested and Inner Classes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Placing a class within another class is known as a nested or inner class.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exception Handling&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While Java&amp;rsquo;s exception handling syntax is simple, I studied why exception handling is necessary.&lt;/p&gt;</description></item><item><title>Spring MVC</title><link>https://wjdwlsdud.github.io/en/studying/spring/</link><pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/studying/spring/</guid><description>&lt;p&gt;##From Servlets to Spring MVC: Learning the Evolution of Java Web Development
This time, I took the opportunity to trace the evolution of web applications, a technology that can be called the core of Java backend development.&lt;/p&gt;
&lt;p&gt;Why Web Applications? Most modern applications operate in a web environment. The countless services we use every day are, in fact, web applications. Java backend developers play a critical role in developing the server-side logic for these applications, and the most powerful tool used for this is the Spring Framework—specifically, Spring MVC.&lt;/p&gt;
&lt;p&gt;To gain a deep understanding of Spring MVC, which helps us develop complex web applications quickly and easily, I studied its foundational technologies step-by-step, starting from its very roots.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The Beginning of Java Web Tech: Servlets
Everything started with Servlets. A Servlet is pure Java code that receives a client&amp;rsquo;s request, processes business logic, and generates a dynamic HTML response. However, this approach had a major drawback: HTML code had to be written directly within the Java code as strings (e.g., out.println(&amp;quot;&lt;html&gt;&amp;hellip;&amp;quot;)). This made modifying the view (the UI) cumbersome and severely harmed readability.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Separating the View: JSP (JavaServer Pages)
JSP emerged to compensate for this shortcoming. JSP is a technology that allows embedding Java code within an HTML document, which made collaboration between designers and developers much easier. Thanks to this, the task of presenting the view became much more manageable.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But JSP alone was not enough. Business logic and presentation code were still mixed in a single file. As projects grew larger, this led to &amp;ldquo;spaghetti code,&amp;rdquo; which became increasingly difficult to maintain.&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;The Start of Role Separation: The MVC Pattern
To solve this problem, a design philosophy called the MVC (Model-View-Controller) pattern emerged.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Model: Manages the data and business logic.&lt;/p&gt;
&lt;p&gt;View: Manages the screen (UI) shown to the user. (JSP)&lt;/p&gt;
&lt;p&gt;Controller: Acts as the intermediary, receiving the user&amp;rsquo;s request and connecting the Model and View. (Servlet)&lt;/p&gt;
&lt;p&gt;By clearly separating these roles, the code became much more structured and reusable.&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;The Birth of Spring MVC and its Practical Use
Implementing the MVC pattern manually still involved a lot of repetitive and cumbersome work. Developers began to create MVC frameworks to make using this pattern easier, and the most successful and overwhelmingly popular of these became Spring MVC.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Spring MVC handles the complex processes required for MVC implementation on behalf of the developer, providing an environment where one can focus solely on the business logic. This study covered everything from the origins of Spring MVC to the modern techniques used in the field, allowing me to personally understand why countless companies choose Spring.&lt;/p&gt;
&lt;p&gt;I will continue to share my experiences as I conduct my own projects using these technologies. Thank you!&lt;/p&gt;
&lt;p&gt;You can check out the code I&amp;rsquo;ve studied so far via the link attached above!&lt;/p&gt;</description></item><item><title>Phone Book Application</title><link>https://wjdwlsdud.github.io/en/projects/mobile/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/projects/mobile/</guid><description>&lt;p&gt;This is a simple mobile app I created for my &amp;ldquo;Mobile Programming&amp;rdquo; course in the 2024 fall semester. This project is a phonebook management app that utilizes fundamental Android features and a database.&lt;/p&gt;
&lt;p&gt;First, I designed a database named phoneDB and a table named phoneTBL. This table stores a name (VARCHAR(20)) and a phone number (VARCHAR(20)). I set a UNIQUE constraint on the name column to prevent duplicates. I included two initial data entries: &amp;ldquo;Hong Gil-dong&amp;rdquo; and my own contact information.&lt;/p&gt;
&lt;p&gt;The main features I implemented are as follows:&lt;/p&gt;
&lt;p&gt;Main Screen (Read Data): On app launch, the app queries the database and displays all saved user names in a ListView. An &amp;ldquo;Add&amp;rdquo; button and an options menu are placed at the bottom.&lt;/p&gt;
&lt;p&gt;Add Contact (Create): Tapping the &amp;ldquo;Add&amp;rdquo; button opens a separate Activity to receive name and phone number input. Upon completion, this information is passed back to the main Activity, saved to the database, and the ListView is immediately refreshed.&lt;/p&gt;
&lt;p&gt;Database Initialization (Delete All): Selecting &amp;ldquo;Initialize&amp;rdquo; from the options menu displays a confirmation dialog. If the user confirms, all content in the database is deleted, and the list is refreshed.&lt;/p&gt;
&lt;p&gt;Data Backup (Export): Through the &amp;ldquo;Backup&amp;rdquo; feature in the options menu, I implemented a function to save all names and phone numbers from the database as a .txt file (named after my student ID) to the /sdcard path.&lt;/p&gt;
&lt;p&gt;Phone App Integration (Intent): When a specific item in the list is clicked, the app retrieves that item&amp;rsquo;s phone number and uses an Intent to immediately launch the default Android phone app with the number pre-filled.&lt;/p&gt;
&lt;p&gt;Update &amp;amp; Delete: A long click on a list item navigates to a separate Activity where the selected item can be modified or deleted. I implemented confirmation dialogs for each action. Upon completion, the changes are reflected in the main Activity&amp;rsquo;s database and ListView in real-time.&lt;/p&gt;</description></item></channel></rss>