Java 21 Release
ยท
Languages/JAVA
Java 21 Release ์˜ˆ์ •๋Œ€๋กœ 9์›” 19์ผ์ž๋กœ Java 21 GA ๋ฆด๋ฆฌ์ฆˆ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (์ด๋ฏธ์ง€ ์ถœ์ฒ˜ - Inside Java) 1. Java 21 Release Note Java 21 ์ „์ฒด ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ๋Š” ์—ฌ๊ธฐ์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - https://jdk.java.net/21/release-notes - https://inside.java/2023/09/19/the-arrival-of-java-21 2. ์ฃผ์š” ๊ธฐ๋Šฅ ์š”์•ฝ Java 21์— ์ถ”๊ฐ€๋˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค ์ค‘ Preview๋‚˜ Incubator๋Š” ์ œ์™ธํ•˜๊ณ , ์ฃผ์š” ๊ธฐ๋Šฅ๋งŒ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. 2.1 Virtual Threads (Project Loom) ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. (**JEP 444**) *"๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ..
2023๋…„ 3์›” 21์ผ JDK 20์ด ๋ฆด๋ฆฌ์ฆˆ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ยท
Languages/JAVA
JDK 20 ๋ฆด๋ฆฌ์ฆˆ 2023๋…„ 3์›” 21์ผ JDK 20์ด ๋ฆด๋ฆฌ์ฆˆ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฆด๋ฆฌ์Šค์—๋Š” ์ƒˆ๋กœ์šด ํ”„๋ฆฌ๋ทฐ ๋ฐ ์ธํ๋ฒ ์ด์…˜ ๋ผ์šด๋“œ์™€ ํ•จ๊ป˜ Project Amber , Project Loom ๋ฐ Project Panama ์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ๊ธฐ์—ฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” JEP๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค . ์—ฌ๊ธฐ์—์„œ ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ค‘ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. JDK 20์—๋Š” Project Valhalla๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” JEP๊ฐ€ ์—†๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . Oracle์€ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ๊ฐ€์ƒ ๋จธ์‹  ๋ฒ„์ „ 20 ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค . ์ด ์ตœ์ข… ๊ธฐ๋Šฅ ์„ธํŠธ์˜ 7๊ฐœ JEP์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. JEP 429: ๋ฒ”์œ„ ๊ฐ’(์ธํ๋ฒ ์ดํ„ฐ) JEP 429: Scoped Values (Incubator) JEP 429: Scoped ..
JPA(Java Persistence API)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
ยท
Languages/JAVA
JPA(Java Persistence API)๋Š” ์ž๋ฐ” ORM ๊ธฐ์ˆ  ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. JPA๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ JDBC ์‚ฌ์ด์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ORM(Object-Relational Mapping)์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งคํ•‘ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ORM ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•ด์„œ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ๋•Œ, Insert SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด๋ฅผ ๋งˆ์น˜ ์ž๋ฐ” ์ปฌ๋ ‰์…˜์— ์ €์žฅํ•˜๋“ฏ์ด ORM ํ”„๋ ˆ์ž„์›Œํฌ์— ์ €์žฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. JPA ์†Œ๊ฐœ ๊ณผ๊ฑฐ ์ž๋ฐ” ๋นˆ์ฆˆ(EJB)๋ผ๋Š” ๊ธฐ์ˆ  ํ‘œ์ค€์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๊ทธ ์•ˆ์—๋Š” ์—”ํ‹ฐํ‹ฐ ๋นˆ์ด๋ผ๋Š” ORM ๊ธฐ์ˆ ๋„ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ๊ธฐ์ˆ  ์„ฑ์ˆ™๋„๋„ ๋–จ์–ด์กŒ์œผ๋ฉฐ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ(J2EE) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—์„œ๋งŒ ๋™์ž‘ ..
zipํŒŒ์ผ ํ•ด์ œ, ๋Œ€์ƒ ํด๋” ๋ณ€๊ฒฝ & ํŒŒ์ผ ์œ„์น˜ ๋ณ€๊ฒฝ
ยท
Languages/JAVA
public static boolean fileMoveDir(String orgDir, String newDir, String fileName, String fileExtend) throws IOException{ boolean result = false; if(fileExtend.equals("zip")){ byte[] buffer = new byte[1024]; File folder = new File(newDir); if(!folder.exists()){ folder.mkdir(); } ZipInputStream zis = new ZipInputStream(new FileInputStream(orgDir+File.separator+fileName)); ZipEntry ze = zis.getNextE..
[java] ์ฃผ๋ง ์ œ์™ธํ•œ ์ด์ „ 5์ผ ๊ตฌํ•˜๊ธฐ
ยท
Languages/JAVA
import java.time.DayOfWeek; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; public class PreviousDaysExcludingWeekends { public static List getPreviousWeekdays(int days) { List weekdays = new ArrayList(); LocalDate date = LocalDate.now().minusDays(1); // start from yesterday while (weekdays.size() < days) { if (!isWeekend(date)) { weekdays.add(date); } date = date...
[java]FilePart(fileUpload)
ยท
Languages/JAVA
package com.healthcare.common.upload.http; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.servlet.ServletInputStream; public class FilePart extends Part { private String fileName; private String filePath; private String contentType; private PartInputStream..
[JAVA]ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์›ํ•˜๋Š” ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
ยท
Languages/JAVA
/** * ํ•ด๋‹น ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์›ํ•˜๋Š” ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜์‹œํ‚จ๋‹ค. * \r\n์ผ๊ฒฝ์šฐ \r์€ ๋ฌด์กฐ๊ฑด ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ž์—ด์—์„œ skipํ•œ๋‹ค. * @param str * @param speChar * @param convertStr * @return */ public static String convertSpecialCharToHtml(String str,char speChar, String convertStr){ String finishStr = ""; int strLeng = str.length(); StringBuffer convertBuff = new StringBuffer(strLeng+50); for(int i=0;i
[java]ํŠน์ˆ˜๋ฌธ์ž์˜ ์กด์žฌ์—ฌ๋ถ€
ยท
Languages/JAVA
/** * \r\n์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์ฐพ๋Š”๋‹ค๋ฉด \n๋งŒ ์ž…๋ ฅ * @param str * @param speChar * @return ์กด์žฌํ• ๊ฒฝ์šฐ true */ public static boolean existSpecialCharToHtml(String str, char speChar){ boolean isExist = false; int strLeng = str.length(); for(int i=0;i
Session ๊ด€๋ฆฌ
ยท
Languages/JAVA
ํด๋ผ์ด์–ธํŠธ์™€ ์ง€์†์ ์ธ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด http protocol์˜ ํŠน์ง•์ด๋ฏ€๋กœ, ์ด์ „ ์š”์ฒญํ•œ ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ Session์„ ์‚ฌ์šฉํ•œ๋‹ค.์ปจํ…Œ์ด๋„ˆ(ํ†ฐ์บฃ) ๋‹จ์—์„œ Session ID๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ , ํ•ด๋‹น Session ID์™€ Cookie๋ฅผ ๋งตํ•‘ ํ•œ ๋‹ค์Œ ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.* ์„ธ์…˜ ID๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.HttpSession session = request.getSession();์œ„์™€ ๊ฐ™์ด ํ•˜๊ฒŒ ๋˜๋ฉด, request๋กœ๋ถ€ํ„ฐ ์„ธ์…˜ ID๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ์ˆ˜ ์žˆ๊ณ , ์ œ์ผ ์ฒ˜์Œ ์š”์ฒญ์ด๋ผ๋ฉด response ๊ฐ์ฒด์— ๋ณด๋‚ผ ์ฟ ํ‚ค๋„ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.* ์„ธ์…˜์ด ์ด๋ฏธ ์žˆ๋Š”์ง€, ์•„๋‹ˆ๋ฉด ์ฒ˜์Œ ์š”์ฒญ์œผ๋กœ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋ ค..
java ์ด์ค‘๋กœ๊ทธ์ธ ๊ธˆ์ง€
ยท
Languages/JAVA
์›น์—์„œ์˜ ์ค‘๋ณต๋กœ๊ทธ์ธ ๋ฐฉ์ง€์˜ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ• ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ค‘๋ณต๋กœ๊ทธ์ธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด, ๋Ÿฌํ”„ํ•œ ์„ค๊ณ„ ์ˆ˜์ค€์—์„œ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์•„๋Š”๋ฐ๊นŒ์ง€๋งŒ..) ๊ฐœ์š” - ํ•˜๋‚˜์˜ userId๋กœ ๋™์‹œ์— ๋‘๊ณณ ์ด์ƒ์—์„œ ์—ฐ๊ฒฐ(๋กœ๊ทธ์ธ๋œ..)๋  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์œผ๋กœ, ๋ณด์•ˆ์ด์Šˆ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. - ๋จผ์ € ๋กœ๊ทธ์ธํ•œ ์—ฐ๊ฒฐ์ด A, ๋‚˜์ค‘์— ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•˜๋Š” ์—ฐ๊ฒฐ์ด B๋ผ๋ฉด, B๊ฐ€ ๋กœ๊ทธ์ธํ–ˆ์„๋•Œ A์˜ ์—ฐ๊ฒฐ์„ ๋Š๋Š”(ํŠ•๊ฒจ๋‚ด๋Š”) ๋ฐฉ๋ฒ•, ๋˜๋Š” A์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ณ  B์˜ ๋กœ๊ทธ์ธ์‹œ๋„๋ฅผ ๋ง‰๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉฐ, ์ฃผ๋กœ ์ „์ž์˜ ๋ฐฉ๋ฒ•์„ ์ทจํ•ฉ๋‹ˆ๋‹ค. ํžˆ์Šคํ† ๋ฆฌ - ์›น ์ด์ „์˜ CS ํ”„๋กœ๊ทธ๋žจ ์‹œ์ ˆ์—๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์„ ์ง์ ‘ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ–ˆ์œผ๋ฏ€๋กœ ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. - ์›น์œผ๋กœ ๋„˜์–ด์™€์„œ, ActiveX๊ฐ€ ํšกํ–‰ํ•˜๋˜ ์‹œ์ ˆ์—๋Š” ์ฃผ๋กœ ActiveX๋ฅผ ์ด์šฉํ•˜์—ฌ ์ค‘๋ณต..