반응형

스프링 부트 하루만에 배우기

책 소개

하루면 대표적인 자바 프레임워크 스프링 부트 웹 어플리케이션을 만들 수 있습니다.

스프링 부트를 개발하는 데 필요한 프로그램 설치부터 스프링 부트의 구조에 대한 설명, JPA를 이용해 데이터를 다루는 법까지 익혀봅니다. 이해하기 어려운 개념 설명보다는 코드를 작성하고 개별 코드를 설명하는 방식으로 진행하므로 초보자 분들도 보다 쉽게 다가가실 수 있으리라 생각합니다. 또한 스프링 MVC와 스프링 부트 차이에 따른 개발 방식에 대해서도 설명하므로 기존에 스프링 MVC를 사용하셨던 분들이 스프링 부트에 적응하시는 데도 도움이 되시리라 믿습니다.

국내 자바 웹 개발 트렌드는 스프링 MVC에서 스프링 부트로 많이 넘어갔다고 생각합니다. 물론 이미 기존에 스프링 MVC로 구축된 프로젝트의 경우는 어쩔 수 없겠지만, 신규로 개발하는 경우 보다 설정이 간단한 스프링 부트 프로젝트를 많이 쓰는 추세입니다.

이제 우리도, 대세에 합류해 봅시다.

 

https://wikidocs.net/book/10382

 

스프링 부트 하루만에 배우기

# 책 소개 하루면 대표적인 자바 프레임워크 스프링 부트 웹 어플리케이션을 만들 수 있습니다. 스프링 부트를 개발하는 데 필요한 프로그램 설치부터 스프링 부트의 구조에 대…

wikidocs.net

 

반응형
반응형

[JAVA] 점프 투 스프링부트 - https://wikidocs.net/book/7601

 

 

https://github.com/pahkey/sbb3/

 

GitHub - pahkey/sbb3: 점프 투 스프링부트3 책의 소스코드

점프 투 스프링부트3 책의 소스코드. Contribute to pahkey/sbb3 development by creating an account on GitHub.

github.com

 

점프 투 스프링부트

점프 투 스프링부트는 Spring Boot Board(SBB)라는 이름의 게시판 서비스를 만들어가는 과정을 설명한 스프링부트 입문서이다. 자바 설치부터 시작하여 서비스 운…

wikidocs.net

 

 

반응형
반응형

Java is Dead — 오늘날에도 여전히 Java가 적합하다고 생각하는 개발자의 5가지 오해!

https://medium.com/@sidh.thomas1/java-is-dead-6-misconceptions-of-developers-that-still-think-java-is-relevant-today-683310849855

 

Java is Dead — 6 Misconceptions of developers that still think Java is relevant today!

It is a common misconception that people still think Java is relevant in today’s day and age. In reality Java is a dying programming…

medium.com

사람들이 여전히 Java가 오늘날과 관련이 있다고 생각하는 것은 일반적인 오해입니다. 실제로 Java는 죽어가는 프로그래밍 언어입니다. Java는 세계에서 가장 널리 사용되고 널리 사용되는 프로그래밍 언어 중 하나이지만 곧 사라질 위험에 처해 있습니다. 오늘날 Java는 크고 활발한 개발자 커뮤니티를 보유하고 있으며 웹 개발, 모바일 앱 개발 및 엔터프라이즈 수준 소프트웨어 개발을 포함한 광범위한 애플리케이션에 여전히 사용되고 있지만 Java가 향후 10년 동안 살아남을 수 있을까요? 개발자가 Java에 대해 가지고 있는 오해를 알아보겠습니다.

오해 1 : Java에는 크고 활발한 개발자 커뮤니티가 있습니다. 전 세계에 수백만 명의 Java 개발자가 있으며 언어는 개발자가 지식과 리소스를 공유하는 온라인 포럼 및 커뮤니티에서 강력한 입지를 확보하고 있습니다.

이것이 계속해서 사실이지만, 개발자들이 다른 플랫폼과 프로그래밍 언어로 이동하는 속도를 보면 알 수 있으며 개인적으로 개발자들이 패닉에 빠지는 것을 보았습니다. 주요 문제는 프로그래밍 언어로서의 Java가 현대화되지 않았기 때문에 여전히 장황하게 남아 있고, 불안정하지만 매우 투박한 유형 시스템을 가짐으로써 정적 유형과 동적 유형 사이의 최악의 두 세계를 결합하고, VM에서 실행해야 한다는 것입니다. 거시적인 시작 시간(오래 실행되는 서버에는 문제가 되지 않지만 명령줄 응용 프로그램에는 문제가 됨). 요즘에는 꽤 잘 수행되지만 여전히 C 또는 C++에 비해 경쟁력이 없으며 약간의 사랑으로 C#, Go, Rust 및 Python이 해당 도메인에서 이를 능가할 수 있습니다. 실제 프로덕션 서버의 경우

오해 2 : Java는 광범위한 응용 프로그램에 사용됩니다. Java는 웹 개발 언어일 뿐만 아니라 모바일 앱, 게임 및 엔터프라이즈급 소프트웨어 개발에도 사용됩니다. 이러한 다양성으로 인해 다양한 유형의 프로젝트에 유용한 언어가 됩니다.

Java는 더 이상 모바일 애플리케이션 개발, 특히 Android에서 선호하는 프로그래밍 언어가 아닙니다. Kotlin은 이제 Android를 지배하고 대부분의 Android 개발자는 오래 전에 배를 뛰어 넘었습니다. 구글조차도 몇 년 전 오라클과의 실패로 인해 안드로이드용 사실상의 언어로서 자바를 포기했습니다. Java는 오래 전에 웹 개발 언어로서의 인기도 잃었습니다. 엔터프라이즈 개발에 관한 한 Java는 신뢰할 수 있고 안정적이기 때문에 여전히 대기업과 관련이 있습니다. 많은 신생 기업이 엔터프라이즈 소프트웨어의 첫 번째 선택으로 Java를 사용하지 않고 다른 대안을 사용하고 있습니다.

오해 3 : Java는 기본 언어입니다. 많은 최신 프로그래밍 언어는 Java의 원칙과 개념을 기반으로 구축되었으며 어떤 방식으로든 Java와 호환되도록 설계되었습니다. 즉, Java의 인기가 떨어지더라도 Java의 원칙과 개념은 계속 유효할 것입니다.

Java가 프로그래밍 여정을 시작하는 많은 사람들에게 기본 언어라는 것은 사실일 수 있지만 Java는 계속해서 매우 구식이고 융통성이 없다는 사실이 남아 있습니다. 게다가 다른 최신 프로그래밍 언어와 비교할 때 여전히 장황합니다. 즉, 특정 작업을 수행하려면 많은 코드가 필요합니다. 이로 인해 간결하고 우아한 코드를 작성하기가 더 어려워질 수 있으며 대규모 코드베이스를 유지 관리하는 데 더 많은 노력이 필요할 수 있습니다. 또한 Java가 정적으로 유형이 지정된다는 사실은 Java가 동적으로 유형이 지정되는 언어보다 더 엄격하고 덜 유연할 수 있음을 의미하므로 일부 개발자에게는 실망스러울 수 있습니다.

오해 4: Java는 주요 회사의 강력한 지원을 받고 있습니다. Java를 유지 관리하고 지원하는 회사인 Oracle은 언어에 대한 강한 의지를 가지고 있으며 개발 및 개선에 지속적으로 투자하고 있습니다. 또한 Google 및 Amazon을 비롯한 많은 주요 회사에서 제품 및 서비스에 Java를 사용합니다.

Oracle은 빠른 속도로 Java 시장 점유율을 경쟁자에게 빼앗기고 있습니다. 아래 그래프를 참조하십시오.

아래 차트는 Oracle이 여전히 시장에서 가장 큰 점유율을 차지하고 있음을 보여주지만 그 점유율은 절반 이상 감소했습니다. 2020년 Oracle은 "Java 시장의 약 75%"를 차지했지만 현재는 35% 미만입니다.

2021년 11월 Java 17이 출시된 이후 Eclipse Adoptium과 거의 비슷한 점유율을 기록하며 2위를 차지한 것은 New Relic의 수치에 따르면 Amazon입니다.

오해 5: Java는 학교와 대학에서 널리 가르칩니다. Java는 프로그래밍 개념을 가르치는 데 널리 사용되는 언어이며 학교 및 대학의 컴퓨터 과학 커리큘럼에서 자주 사용됩니다. 이는 Java를 배우고 그 기능에 익숙해지는 새로운 개발자의 꾸준한 흐름이 있음을 의미합니다.

이것은 크게 변화하고 있습니다. 소프트웨어 개발자를 꿈꾸는 젊은 대학생들은 빠르게 다른 프로그래밍 언어로 옮겨가고 있습니다. 이로 인해 이러한 다른 프로그래밍 언어에 대한 대중적인 수요로 인해 대학에서 대안을 찾는 일이 점점 더 많아지고 있습니다.

나는 이것이 논란의 여지가 있는 주제라는 것을 안다. 저는 여전히 Java를 소프트웨어 작성 방식을 혁신하고 따라야 할 다른 프로그래밍 언어에 대한 벤치마크를 만든 언어로 생각합니다. 불행하게도 언어의 소유권은 많은 금전적 이익을 남기지 않고 계속 개선할 의욕이 없는 회사의 손에 있습니다. Java는 곧 사라지지 않지만 몇 년 안에 관련성을 잃을 심각한 위험에 처해 있습니다.

반응형
반응형
>java -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize permsize version"
    uintx ErgoHeapSizeLimit                         = 0                                   {product}
    uintx HeapSizePerGCThread                       = 87241520                            {product}
    uintx InitialHeapSize                          := 268435456                           {product}
    uintx LargePageHeapSizeThreshold                = 134217728                           {product}
    uintx MaxHeapSize                              := 4282384384                          {product}
java version "1.8.0_271"

Java Default Heap/Perm Size 알아내는 방법

출처: https://jang8584.tistory.com/257 [개발자의 길]

 

JVM의 default heap size 확인(리눅스, 윈도우)

1. 개요 java를 실행시킬 때, 혹은 WAS를 설치/구성 후 기동할 때 JVM옵션에 Heap, Perm 등의 설정을 넣지 않고 운영하다 쏟아져들어오는 요청들에~ 메모리를 많이 필요료하는 로직들에 의해 OutOfMemoryErr

jang8584.tistory.com

 

반응형
반응형

"자바 두명 타세요" 개발자 인력시장에 비유한 SW채용박람회

news.mt.co.kr/mtview.php?no=2020120310284718257

 

"자바 두명 타세요" 개발자 인력시장에 비유한 SW채용박람회 - 머니투데이

한 IT 공공기관이 소프트웨어(SW) 개발자 온라인 채용박람회를 진행하는 가운데 안내 포스터에 SW개발자를 새벽 인력시장 인부에 비유한 이미지를 사용해 물의를 빚...

news.mt.co.kr

한 IT 공공기관이 소프트웨어(SW) 개발자 온라인 채용박람회를 진행하는 가운데 안내 포스터에 SW개발자를 새벽 인력시장 인부에 비유한 이미지를 사용해 물의를 빚고있다.

판교창업존 운영기관인 경기창조경제혁신센터가 진행하는 '스타트업DNA-623 오픈런' 온라인 채용박람회 포스터다. 중소벤처기업부와 창업진흥원이 후원하는 이 행사는 스타트업들로부터 구인신청을 받고 이후 취업을 희망하는 구직자가 지원서를 제출하면 온라인상에서 매칭해주는 채용이벤트다.

하지만 좋은 취지와 달리 행사 안내포스터에 마치 영등포나 구로 새벽 인력시장에서 개발자를 픽업하는 듯한 이미지를 사용해 구설에 올랐다. 특히 "자바 두명 타세요"라는 문구는 이미 수년전부터 개발자들의 열악한 처우를 건설인부의 속칭 '노가다'(건축 및 토목노동자를 의미하는 일본어 유례 속어)에 비유한 사례로 회자돼 온 것이다.

최근 4차 산업혁명과 비대면 열풍으로 AI(인공지능)과 클라우드, 블록체인 등 SW시스템 개발 수요가 폭증하면서 개발자 부족현상이 심화되는 현실과도 맞지않다는 지적이다.

한 SW개발자는 "개발자 채용박람회라하면서 국가가 나서서 저런 인력시장 그림을 갖다 붙이는 것은 너무한 것 아니냐"면서 "오픈런이라는게 도망가라는 뜻인가? 개발자를 조롱하는 것같다"고 질타했다.

개발자 커뮤니티 오키의 노상범 대표는 "나름 유머라고 생각한 모양인데 담당자의 IT에 대한 인식수준이 저것밖에 안되나 싶다"고 꼬집었다.

경기창조경제혁신센터도 이같은 지적이 일자 포스터 이미지를 교체했다. 센터 관계자는 "개발자들을 모신다는 의미로 비하할 의도는 없었는데 잘못 전달된 것 같다"면서 "일부 지적이 있어 어제 바로 포스터 이미지를 교체했다"고 밝혔다.

 

반응형
반응형

 [JAVA] jdk8 다운로드,  Konlpy jvm 에러 해결. 

 

> from konlpy.tag import Kkma
> tokenizer = Kkma()
 

이러면 jvm 에러 계속 발생했는데... 

 

No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly
, line 91, in __init__
jvm.init_jvm(jvmpath, max_heap_size)

, line 55, in init_jvm
jvmpath = jvmpath or jpype.getDefaultJVMPath()

, line 74, in getDefaultJVMPath
return finder.get_jvm_path()

, line 212, in get_jvm_path
raise JVMNotFoundException("No JVM shared library file ({0}) "

jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

 

기존 java를 다 삭제하고. 다시 아래에서 다운받아서 설치. 

jdk-8u271-windows-x62

JAVA_HOME도 다시 설정. 

CLASSPATH - C:\Program Files\Java\jdk1.8.0_271\lib\tools.jar

JAVA_HOME - C:\Program Files\Java\jdk1.8.0_271\jre\bin\server

 

CLASSPATH
JAVA_HOME

www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

www.oracle.com/java/technologies/javase-jre8-downloads.html

 

In [1]: from konlpy.tag import Kkma

In [2]: tokenizer = Kkma()

In [3]: tokenizer.morphs("카페에서의 여유 참 좋네요")
Out[3]: ['카페', '에서', '의', '여유', '참', '좋', '네요']

반응형
반응형

자바 명명 규칙 - 클래스 / 메서드 / 변수

 

주로 쓰는 반의어 

get / set
add / remove
create / destroy
start / stop
insert delete
increment / decrement
old / new
begin / end
girst / last
up / down
min / max
next / previous
open /close
show /hide
suspend /resume
parent / child

받다/ 받다
추가/제거
창조/파괴하다
시동/정지
삽입/삭제
증가/감소
구/신
시작/끝
긴/마지막
위/아래
최소/최대
다음/이전
열다/ 닫다
보이다/ 숨기다
일시 정지/재개하다
부모/아이

 0. 공통 명명 규칙

대소문자가 구분되며 길이에 제한이 없다.
예약어를 사용해서는 안 된다.
숫자로 시작해서는 안 된다.
특수문자는 '_' 와 '$'만을 허용한다.
파스칼 표기법 (PascalCase)과 카멜 표기법(camelCase)를 사용한다.
      PascalCase : 모든 단어에서 첫 번째 문자는 대문자이며 나머지는 소문자이다.
      camelCase : 최초에 사용된 단어를 제외한 첫 번째 문자가 대문자이며 나머지는 소문자이다.
반의어는 반드시 대응하는 개념으로 사용해야 한다.

1. 패키지(Package) 명명 규칙

패키지명은 표준 패턴을 따라야 한다.
Ex) [com].[Company].[Project].[TopPackage].[LowerPackage]

패키지명은 가급적 한 단어의 명사를 사용한다.
Ex) 좋은 예 : com.nexon.sudden.member.object
Ex)  나쁜 예 : sudden.memberObject


2. 클래스(Class) 명명 규칙

클래스명에는 파스칼을 사용한다.
Ex) public class HelloWorld {}

인터페이스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용한다.
Ex) public interface Animal {}

인터페이스를 구현한 클래스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용한다.
Ex) public class Tiger implements animal{}

추상 클래스에는 특별한 접두사 접미사를 사용하지 않고 파스칼을 사용한다.
Ex) public abstract class Animal {}


3. 메소드(Method) 명명 규칙

메소드명에는 파스칼 표기법을 사용한다.
Ex) public void SendMessage(String message) {}

속성에 접근하는 메소드명의 접두사는 'get','set'을 사용한다.
Ex) public void setDisplayName
Ex) public void getDisplayName

데이터를 조회하는 메소드명의 접두사는 find를 사용한다.
Ex) public void findData(String data){}

데이터를 입력하는 메소드명의 접두사는 input을 사용한다.
Ex) public void inputData(HashMap data){}

데이터를 변경하는 메소드명의 접두사는 modify를 사용한다.
Ex) public void modifyData(HashMap data){}

데이터를 삭제하는 메소드명의 접두사는 delete를 사용한다.
Ex) public void deleteData(String data){}

데이터를 초기화 하는 메소드명의 접두사는 initialize을 사용한다.
Ex) public void initData(String data){}

반환값의 타입이 boolean인 메소드는 접두사로 is를 사용한다.
Ex) public void isData(String Data){}

데이터를 불러오는 메소드명의 접두사는 load를 사용한다.
Ex) public void loadData(){}

데이터가 있는지 확인하는 메소드명의 접두사는 has를 사용한다.
Ex) public void hasData(){}

보다 지능적인 set이 요구될때 사용하는 메소드명의 접두사는 register를 사용한다.
Ex) public void registerAccount(){}

새로운 객체를 만든뒤 해당 객체를 리턴해주는 메소드명의 접두사는 create를 사용한다.
Ex) public void createAccount(){}

해당 객체를 다른 형태의 객체로 변환해주는 메소드명의 접두사는 to를 사용한다.
Ex) public void toString(){}

해당 객체가 복수인지 단일인지 구분하는 메서드명의 접미사는 s를 사용한다.
Ex) public void getMembers(){}

B를 기준으로 A를 하겠다는 메소드명의 전치사는 By를 사용한다.
Ex) public void getUserByName(String name){}

반환값의 타입이 boolean인 메소드는 접두사로 is를 사용한다.
Ex) public void isData(String Data){}

데이터를 불러오는 메소드명의 접두사는 load를 사용한다.
Ex) public void loadData(){}

데이터가 있는지 확인하는 메소드명의 접두사는 has를 사용한다.
Ex) public void hasData(){}

보다 지능적인 set이 요구될때 사용하는 메소드명의 접두사는 register를 사용한다.
Ex) public void registerAccount(){}

새로운 객체를 만든뒤 해당 객체를 리턴해주는 메소드명의 접두사는 create를 사용한다.
Ex) public void createAccount(){}

해당 객체를 다른 형태의 객체로 변환해주는 메소드명의 접두사는 to를 사용한다.
Ex) public void toString(){}

해당 객체가 복수인지 단일인지 구분하는 메서드명의 접미사는 s를 사용한다.
Ex) public void getMembers(){}

B를 기준으로 A를 하겠다는 메소드명의 전치사는 By를 사용한다.
Ex) public void getUserByName(String name){}

4. 변수(Variable) 명명 규칙

변수와 메소드의 파라미터에는 카멜표기법을 사용한다.
변수에 약어를 사용하지 않고 모든 의미를 충분히 담는다.
한 글자로 된 이름을 사용하지 않는다.
선언된 지점에서 초기화하며, 가능한 사용범위를 최소화 한다. 숫자 0 레퍼런스 null
반복문에서 인덱스로 사용할 변수는 i,j,k 등으로 사용한다.
Ex) for(int i = 0; i < 10; i++){}

지역변수와 멤버변수(전역변수)는 변수명 앞에 밑줄(_)을 사용하여 구별한다.
boolean타입의 변수는 접두사로 is를 사용한다 Ex) isCheck

반응형
반응형

JAVA excel - [POI] POI 엑셀 - Using newlines in cells ( 셀에서 줄바꿈 )

 CellStyle cs = wb.createCellStyle();
    cs.setWrapText(true);
    cell.setCellStyle(cs);

   Workbook wb = new XSSFWorkbook();   //or new HSSFWorkbook();
    Sheet sheet = wb.createSheet();

    Row row = sheet.createRow(2);
    Cell cell = row.createCell(2);
    cell.setCellValue("Use \n with word wrap on to create a new line");

    //to enable newlines you need set a cell styles with wrap=true
    CellStyle cs = wb.createCellStyle();
    cs.setWrapText(true);
    cell.setCellStyle(cs);

    //increase row height to accomodate two lines of text
    row.setHeightInPoints((2*sheet.getDefaultRowHeightInPoints()));

    //adjust column width to fit the content
    sheet.autoSizeColumn((short)2);

    FileOutputStream fileOut = new FileOutputStream("ooxml-newlines.xlsx");
    wb.write(fileOut);
    fileOut.close(); 

반응형

+ Recent posts