라벨이 java인 게시물 표시

2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

iBATIS 개요

이미지
iBATIS는 데이터베이스에 있는 자원들을 보다 쉽게 이용하기 위한 기술이다. DB와 자바 객체간의 직접적인 동기화를 이루는 ORM(Object Relational Mapper)은 아니며, 자바 객체를 PreparedStatement 파라미터와 ResultSet으로 쉽게 매핑할 수 있도록 도와주는 간단한 기능을 제공한다. 개발자는  프로그램에서 사용될 SQL 문장들을 간단한 XML파일 형태로 작성하여 코드와 SQL문을 분리하고, 자바 객체와 XML 사이에 매핑을 걸어 이를 사용 한다. 자바 코드 내에서 특정 쿼리문을 실행하기 원할 때, 파라미터와 필요한 조건을 넘기기 위한 객체를 생성하고, SQLMaps를 실행하기 위한 쿼리의 객체와 이름을 넘겨준다. 쿼리가 실행되었을 때 SQLMaps는 쿼리 결과를 받기 위해 정의된 클래스의 인스턴스를 생성하게 되는데, 이는 데이터베이스에 의해 반환된 ResultSet으로부터 만들어진다. 이것이 iBATIS의 기본적인 생각과 실행 절차이다. <SQLMaps의 구조> 1. iBATIS를 사용하기 위한 파일구성 → SQL Map Configuration XML 파일 - 데이터베이스 관련 설정 및 SQL Map들의 정보 → SQL Map XML 파일 - SQL 구문 → iBATIS 라이브러리 - iBATIS API 2. SQL Map Configuration 파일의 간단한 예(SqlMapConfig.xml) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" " http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapCo...

Java SE 에 관한 대략의 정리~

이미지
꽉 자바~~~내 손을 꽉 자바~~~ㅠㅠ 어언 12년전(쿨럭..) 고등학교 1학년 때 처음 듣게 된 java라는 언어. 당시에는 프로그래밍을 전~~~혀 할 줄 몰랐기에 관심도 없었던 것 같다. 당시 대학교에 다니시던 전산부 선배님들이 축제 때 놀러오셔서 엄청나게 강조를 하셨던 기억이 있다... '자바와 플래시, 이 두 기술은 엄청나게 뜰 것 같으니까 열심히 해 둬라~' 라고. 그러나 불량학생이었던 나는, 'Hello java world' 를 찍어보고 자바는 그냥 놔버렸고;; 플래시는 오브젝트와 타임라인을 만지던 와중, 나의 미적감각과 드로잉 실력으로는 무리구나 싶어서 포기..;; 대학교에 들어가기 전, 어줍잖은 Javascript와 html, 그리고 ASP 프로그래밍을 배워서 대학에 입학했지만.. 그 후로 프로그래밍 공부는 살포시 접어두고 웹 페이지 개발과 경영, 심리학에 몰두;;; 이제와서 다시 자바를 잡으려고 하니 손이 저리기 시작하면서 왠지 모를 떨림이 덜덜덜... 고등학교 때, 자바를 열심히 공부했다면 지금 나는 많이 달라졌을텐데...라는 후회는 잠시 뒷전으로 미루어두고.. Enterprise Architector 와 Project Manager 가 되기 위해서 열심히 해 보자. 우선, JAVA 언어는 SUN 시스템스에서 발표한 객체지향 언어 중 하나이다. JAVA라는 커피콩이 있다나?? 뭐 이 언어를 고안한 사람이 그 커피 메니아라던가 그런 속설이 있다;;; JVM(Java virtual machine) 을 사용하여 운영체제나 시스템 플랫폼에 독립적인 것이 가장 큰 특징이다. 또한 실행환경인 JRE(Java reuntime environment) 개발환경인 SDK가 무료로 제공된다는 점도 매력 중 하나!! 중요한 자바관련 기술로는 JavaBeans와 Enterprise JavaBeans 가 있다. JavaBeans는 자기참조성과 영속성을 가진 Beans...

Namespace 와 Package

이미지
항상 JAVA 프로그램을 보면서, 또 실행하면서 짜증난 것이 바로 이 Package가 아닐까 싶다. 학부 시절, Web Service Application을 분석하는데 계속 class 파일을 못 찾는다면서 에러가 나는 게 아닌가. 폴더 뒤져보면 분명히 파일이 있는데, 실행하면 없단다. 아 놔 이런 조카 크레파스 십팔색 같으니!!!! 라고 머리를 쥐어뜯었지만 결국 탈모만 가속화 ㅋㅋㅋㅋ 지금 생각하면 정말 어처구니 없는 짓이기도 하고, 역시나 기초라는 것의 중요성을 다시금 깨닫게 한달까? 우선  Namespace는 의미적으로 관련이 있는 클래스를 모아서 그룹화   한 것이다. '.' 로 구별해서 구조적, 단계적으로 기술하게 되며, Namespace를 사용하기 위해서는 import 라는 예약어가 필요!! 무슨말인고 하니, 다음 그림을 보자. 이 그림을 보면 자바에서 많이 쓰이는 String과 Graphics Class, Bean이라고 해야할까?? 여튼 이 녀석이, Java라는 namespace 안에 lang과 awt라는 namesapce가 있고, 그 안에 존재를 하는거다. 그래서 오른쪽과 같이 java.lang.*; 라고 적어주면, java 안의 lang 에 있는 모든 Beans 를 쓰겠습니다!! 라고 선언해주는 것이다. 이 경우, java.lang.String 에 있는 객체를 사용할 수 있게 되었으므로, 새로운 String 객체 s를 만들 수 있다. 또한, awt 의 Graphics 를 사용할 수 있게 되어서, Graphics g 라는 파라메터도 받을 수 있는 것이라는!! 지금까지 습관적으로, 그리고 아무런 생각 없이 import java.util.*; 라던가 적었는데, 반성하자. (퍼벅) 자, 이  namespace를 실제적으로 실현하기 위한 개념이 바로 package  개념이다. 관계된 여러 class와 파일들을 정해진 위치에 지정해서 찾기도 쉽고 참조...

AWT&Swing vs applet??

이미지
JAVA에는 참 이름도 많고 개념도 많고 이래~저래~복잡하다 생각이 든다. AWT니, Swing이니, Applet이니...처음에는 짜증이 확!!! 나버렸다. 그러다가 어느 순간에 헛 Swing!!! 이런 개그나 치는 신세로 전략을 해 버렸으니 ㅋㅋ 여튼 세 단어의 공통점이랄까?? Java를 통해서 GUI를 제공하기 위한 기술들이라는 점. 그러나, 조금씩 차이점이 있으니!!! 쨔!!잔!! 우선,  AWT 는 Abstract Window Toolkit으로 자바의 인터페이스 제공 기술  중 하나다. MS의 C#이나 VB를 하면 기본적으로 인터페이스가 좍좍 나와주니까 별 문제가 안 되지만서도.. (물론 이 역시도 Win32-API등을 사용한 것이지만, 기본 플랫폼이 MS 운영체제이므로 호환이 잘 되는거죠~) 자바의 경우에는 '운영체제에 독립적' 이라는 설계원칙에 의해서, Windows의 인터페이스를 지원하기 위해서는 별도의 지원방식이 필요했고, 그것이 바로 이 AWT가 되겠다. 윈도우의 화면구성을 지원하기 위한 Java2D와 입력제어를 위한 Input Method 가 존재한다. 이 녀석의 문제라면, MS Windows의 플랫폼에 의존하게 된다는 것. 그래서 나온 녀석이 바로  Swing!!!  이다. 이 녀석은 AWT에 비해서 Hi-level에 설계가 되어있어서 확장이 가능하다. MVC 에 기반을 두고 설계 가 되었기 때문에 실시간으로 화면의 변경도 가능하다. 무엇보다도 플랫폼에 독립적이며 나름 Swing은 경량 컴포넌트다. 물론 JAVA가 느리네~무겁네~라고들 많이 하지만, Swing 기술은 실행속도가 빠르고 메모리 점유율이 낮다. AWT와 Swing은 javax.swing.JFrame을 상속받아서 사용하게 된다. AWT를 사용하는 방법도 있지만, Swing 보다 복잡하고 사용법도 번거롭다. Applet 는 위의 두 녀석과 다르게 웹 브라우저를 ...

JavaBeans 에 대한 나름 정리

이미지
정의 :  자바 언어로 작성된 클라이언트 컴포넌트  시스템, 여기서 각 컴포넌트를 Bean이라고 한다. 재이용이 가능하게 하기 위해서 만든 소프트웨어의 부품이다. 내용 : GUI 구현부, 범용 로직구현부, Visual Programming 특성 : 자기참조성 - Introspection 과 영속성 - Serialization(실행중인 변수와 Bean의 상태를 보존) 을 지님. JAR Format을 이용한 Packaging 과 Deployment. 같은 JVM에서 실행되며 각 Bean은 고유의 Visual을 지닌다. 필수적으로 Default Constructor와 BeanInfo를 가진다. 관련 툴 : JBuilder(Borland), VisualAge(IBM -> Eclipse에 통합), NetBeans(Sun MicroSystem) [Beans Architecture] [Written by lovelydai]

프로그래머의 초식 - 디자인 패턴이란??

1980년대 중반 소프트웨어의 사용 범위와 규모가 폭발적으로 늘어나게 되면서 소프트웨어를 구성하는 프로그램의 논리는 점점 더 복잡한 실타래처럼 꼬여갔다. C 언어로 대표되는 기존의 ‘절차적’ 언어가 그런 변화를 감당하기에 역부족이라는 사실은 누구의 눈에도 분명했다. 이와 같은 상황에 등장하여 사태를 단숨에 제압한 존재가 바로 ‘객체’였다. 객체가 제공한 ‘코드의 재사용(reusability)’과 ‘다형성(polymorphism)’이라는 약은 중병을 앓던 소프트웨어의 세계에서 놀라운 효능을 지닌 처방이 되었다. 객체의 ‘약’맛을 본 프로그래머들은 세부적인 알고리즘의 구현에 점점 덜 구애받게 되었다. 세부적인 논리보다는 요구사항(requirements)을 분석한 결과에 따라서 객체를 정밀하게 설계하는 일이 더 중요하게 되었기 때문이었다. 하지만 모든 약이 그렇듯이 객체도 모든 병에 대한 만병통치약이 될 수는 없었다. 객체의 개념과 장단점을 정확하게 파악하고 있는 프로그래머에게 객체는 분명 약이 되었지만 그렇지 않은 프로그래머에게는 오히려 ‘독’이 되기도 했던 것이다. 객체지향의 창시자, 와드 커밍햄과 켄트 벡 1987년에 객체지향 언어인 ‘스몰토크(Smalltalk)’를 이용해서 소프트웨어 설계 작업을 하던 와드 커닝험(Ward Cunningham)과 켄트 벡(Kent Beck)은 막바지에 이른 작업의 완성을 위해서 소프트웨어를 이용하게 될 사용자들이 직접 설계를 끝내도록 맡겼다. 이 때 커닝험과 벡은 스몰토크에 익숙하지 않은 사용자들이 잘못된 설계를 하는 것을 방지하기 위해서 스몰토크 언어를 이용한 설계에서의 몇 가지 핵심적인 내용을 간추린 ‘패턴(pattern)’을 정리해서 교육시켰다. 교육의 결과는 만족스러웠다. 커닝험과 벡은 이 경험으로부터 객체지향 언어에 있어서 디자인 패턴의 중요성을 처음으로 깨닫게 되었다. 그리하여 그들은 1987년에 열린 OOPSLA(Object-Oriented Programming, Sy...

Applet으로 구현한 엄청 간단한 호텔예약시스템

이미지
[ 문 제 정 의 ] Applet을 이용하여 개시일, 종료일, 방의 수를 입력받은 후 이를 출력하는 프로그램을 작성하시오. [ 소 스 코 드 ] import  javax.swing.*; import  java.awt.*; import  java.awt.event.*; import   java.applet .*; import  java.util.*; import  java.text.*; public   class   APPTest   extends  JApplet  implements  ActionListener { /** *   @param   args */ private  JPanel  pnBegin ,  pnEnd ,  pnNumber ,  pnButton ; private  JLabel  lbBegin ,  lbEnd ,  lbNumber ; private  JTextField  txtBegin ,  txtEnd ,  txtNumber ; private  JButton  btnSend ,  btnClear ; private   final   int   _WIDTH  = 350; private   final   int   _HEIGHT  = 200; public   void  setDefaultData() { SimpleDateFormat sdf =  new  SimpleDateFormat( "yy/MM/dd" ); Calendar today = Calendar. getInstance (); ...