1. Java 개발 공식 사이트

 - http://www.java.net/
 - http://weblogs.java.net/

2. jGuru
 - http://www.jguru.com/

3.  java.blogs 커뮤니티
 - http://www.javablogs.com/

4. Java를 포함한 다양한 개발 지침서들 제공
 - http://www.developer.com/

5. IBM Java developerworks
 - http://www.ibm.com/developerworks/kr/java/

6. Java기반의 Open Source Software
 - http://java-source.net/

7. About.com:Java
 - http://java.about.com/

8. Java 개발자 Journal 웹사이트
 - http://java.sys-con.com/

9. Java Technology
 - http://java.sun.com/

10. Javaworld
 - http://www.javaworld.com/

11. DevX: Java Zone
 - http://www.devx.com/java

12. Javalobby
 - http://java.dzone.com/

13. Javajia
 - http://www.javajia.com/

14. Java Community Process
 - http://www.jcp.org/

15. Java examples (example source code) Organized by topic
 - http://www.java2s.com/

16. TheServerSide.com
http://www.theserverside.com/

17. JavaServiceNet
 - http://javaservice.net/

18. OKJsp
 - http://okjsp.pe.kr/

19. Sun Developer Network 공식 블로그
 - http://blog.sdnkorea.com/

20. JavaRanch
 - http://www.javaranch.com/

21. The Java Posse
 - http://javaposse.com/

22. javastudy
 - http://www.javastudy.co.kr/

23. Javajigi
 - http://javajigi.net

이 중에는 아는 곳도 있고, 모르는 곳도 있다. ^^

1. Improved Type Inference for Generic Instance Creation

 - 단순해진 Generics
이전 : 
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
JDK7 :
Map<String, List<String>> anagrams = new HashMap<>();
 - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000009.html

2. Language support for collections
 - Java 코드의 사이즈를 줄여주고, 가독성을 높여줌
이전 :
final List<Integer> piDigits =
Collections.unmodifiableList(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9 ));
JDK7 :
final List<Integer> piDigits = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9];
 - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/001193.html

3. Automatic Resource Management
 - exception handling을 줄여줌
 - C++’s RAII과 C#’s using에 대응하기 위함
이전 :
static String readFirstLineFromFile(String path) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
}
JDK7 :
static String readFirstLineFromFile2(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
}
 - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000011.html

4. Added binary integer literals
 - Integer Literal에 Binary Integer Literal이 추가됨
BinaryIntegerLiteral:
BinaryNumeral IntegerTypeSuffix_opt
BinaryNumeral:
0 b BinaryDigits
0 B BinaryDigits
BinaryDigits:
BinaryDigit
BinaryDigit BinaryDigits
BinaryDigit: one of
0 1
 - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000929.html

5. String literals in switch statements
 - 스위치문에 문자열 사용 가능
JDK7 :
String s = "first";
switch(s) {
case "first":
processFirst(s);
case "second":
case "third":
processThird(s);
break;
case "fourth":
processFourth(s);
default:
processDefault(s);
break;
}
 - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000001.html

6. Simplified Varargs Method Invocation
 - 컴파일 경고에서 메소드 선언 경고로 이동함
이전 :
static <T> List<T> asList(T... elements) { ... }
static List<Callable<String>> stringFactories() {
Callable<String> a, b, c;
...
*// Warning: **"uses unchecked or unsafe operations"*
return asList(a, b, c);
}
JDK7 :
*// Warning: **"enables unsafe generic array creation"*
static <T> List<T> asList(T... elements) { ... }

static List<Callable<String>> stringFactories() {
Callable<String> a, b, c;
...
return asList(a, b, c);
}
 - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000217.html

7. Enhanced null handling
 - Null-ignore invocation, Null-safe types
이전 :
String str = getStringMayBeNull();
str = (str == null ? "" : str);
JDK7 :
String str = getStringMayBeNull() ?: "";
 - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000217.html

8. Enum Comparisons
 - Enum에서 range(<, > 등) 연산 가능
이전 :
if(rank1.compareTo(rank2) < 0) ...
if(rank1.ordinal() < rank2.ordinal()) ...
JDK7 :
if(rank1 < rank2) ...
9. Chained Invocation
 - 체인형식으로 메소드 호출 가능
이전 :
DrinkBuilder margarita = new DrinkBuilder();
margarita.add("tequila");
margarita.add("orange liqueur");
margarita.add("lime juice");
margarita.withRocks();
margarita.withSalt();
Drink drink = margarita.drink();
JDK7 :
Drink margarita = new DrinkBuilder()
.add(“tequila”)
.add(“orange liqueur”)
.add(“lime juice”)
.withRocks()
.withSalt()
.drink();
10. Extension Methods
 - static import 확장
이전 :
List list = new ArrayList();
...
Collections.sort(list);
list.sort();
JDK7 :
import static java.util.Collections.sort;
List list = new ArrayList();
...
list.sort();
 - 레퍼런스 : http://www.javac.info/ExtensionMethods.html

11. Improved Exception Handling
 - 두개이상의 catch문 가능
 - catch문에서 rethrow가능
JDK7 : catch multiple exceptions
try {
return klass.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new AssertionError(e);
}
JDK7 : rethrow exceptions
try {
doable.doIt();
} catch (final Throwable ex) {
logger.log(ex);

// surrounding method can declare only checked thrown by doIt()
throw ex;
}
 - 레퍼런스 : http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000003.html

12. Language support for JSR 292
 - 다이나믹 타입 지원(java.dyn.Dynamic)
JDK7 :
Dynamic x = (any type of expression can go here);
Object y = x.foo("ABC").bar(42).baz();


Welcome!                     145 Sessions,1856 Registered

Code Camp is a new type of community event where developers learn from fellow developers. All are welcome to attend and speak. Code Camps have been wildly successful, and we’re going to bring that success to Northern California.

The Code Camp consists of these points:

  • by and for the developer community
  • always free
  • community developed material
  • no fluff – only code
  • never occur during working hours

Sessions will range from informal “chalk talks” to presentations. There will be a mix of presenters, some experienced folks, for some it may be their first opportunity to speak in public. And we are expecting to see people from throughout the Northern California region and beyond.


까먹을 것 같아서 @_@) 기록을 남겨둔다.

The second small change from coin project, new numeric litterals has been integrated to jdk7/tl workspace and will be soon promoted into jdk7 main workspace.

The patch introduces two new notations for numeric litterals:

  1. Binary litteral
    Litteral coded in binary starting with prefix 0b. This prefix can be prefixed by minus for negative number.
         0b11 == 3

    -0b11 == -3
    More examples here.

  2. Underscores in litterals
    Allow to use underscore ('_') to separate digits in litterals. Underscore can be used anywhere between two digits.
         long aBankAccountBalance = 1_000_000_000;

    long aVisaCardNumber = 1234_1234_1234_1234;

    long aFrenchPhoneNumber = 01_60_95_77_33;
Of course, these two new syntax can be mixed:
    int value = 0b11111111_00000000_11111111_00000000;


JDK7 에는 기본 자료형 중 숫자와 관련된 표현식이 두개가 추가가 될 것으로 보여집니다.
첫번째로는, 접두사 '0b'입니다. 접두사 '0b'는 2진수를 표현하기 위한 접두사입니다. 접두사 '0b'앞에 '-'를 붙여서 '-0b'를 접두사로 붙이면 음수를 표현할 수도 있다고 합니다.

두번째로, '_'를 이용하여 각기다른 숫자를 표현할 수 있게 된다고 합니다. 예제는 위에서 보시는 2번 항목과 같습니다. 그렇다면, 언더바의 차이를 이용해서 각기다른 값에 대한 표현이 가능해지겠습니다. 그런데 왜 그렇게 할까요? ㅡ_-)?

전화번호 같은 경우
01099998888 로 객체를 표현할 경우 이를 010_9999_8888 로 해서 구분할 수 있도록 만들려는 것일까요?
개발하여 사용하는 국가들의 양식에 맞춰서 쓸 수 있도록 유연성을 높인 표현방식일 수도 있겠다라는 생각을 해봅니다.

당연히, 두가지의 표현식을 합쳐서 사용할 수도 있다고 합니다.
  1. cannot find symbol 또는 cannot resolve symbol
    지정된 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않은 변수나 메서드를 사용하거나, 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생한다. 자바에서는 대소문자 구분을 하기 때문에 철자 뿐 아니라 대소문자의 일치여부도 꼼꼼하게 확인해야 한다.
  2. ';' expected
    세미콜론';'이 필요한 곳에 없다는 뜻이다. 자바의 모든 문장의 끝에는 ';'을 붙여주어야 하는데 가끔 이를 잊고 실수하기 쉽다.
  3. Exception in thread "main" java.lang.NosuchMethodError : main
    'main 메서드를 찾을 수 없다.'는 뜻인데 실제로 클래스 내에 main 메서드가 존재하지 않거나 메서드의 선언부 'public static void main(String[] args)'에 오타가 존재하는 경우에 발생한다.
      이 에러의 해결방법은 main 메서드가 클래스에 정의되어 있는지 확인하고, 정의되어 있다면 main 메서드의 선언부에 오타가 없는지 확인한다. 자바는 대소문자를 구별하므로 대소문자의 일치여부까지 정확히 확인해야 한다.
      - args 는 매개변수의 이름이므로 args 대신 arg와 같은 다른 이름을 사용할 수 있다.
  4. Exception in thread 'main' java.lang.NoClassDefFoundError : Help
    'Hello라는 클래스를 찾을 수 없다.'는 뜻이다. 클래스의 'Hello'의 철자, 특히 대소문자를 확인해보고 이상이 없으면 클래스파일(*.class)이 생성되었는지 확인한다.
      예를 들어 'Hello.java'가 정상적으로 컴파일 되었다면 클래스파일 'Hello.class'가 있어야 한다. 클래스파일이 존재하는데도 동일한 메시지가 반복해서 나타난다면, 클래스패스(classpath)의 설정이 바르게 되었는지 다시 확인해보자.
  5. illegal start of expression
    직역하면 문장(또는 수식, expression)의 앞부분이 문법에 맞지 않는다는 의미인데, 간단히 말해서 문장에 문법적 오류가 있다는 뜻이다. 괄호'(' 나 '{'를 열고서 닫지 않거나, 수식이나 if문, for문 등에 문법적 오류가 있을 때 또는 public 이나 static 과 같은 키워드를 잘못 사용한 경우에도 발생한다. 에러가 발생한 곳이 문법적으로 옳은지 확인하라.
  6. class, interface or enum expected
    이 메시지의 의미는 '키워드 class 나 interface 또는 enum가 없다.' 이지만, 보통 괄호 '{' 또는 '}'의 개수가 일치하지 않는 경우에 발생한다. 열린 괄호 '{'와 닫힌 괄호 '}'의 개수가 같은지 확인하자.

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts