2. AnkaraJUG
first event @ November 2012...
Founding Fathers:
Barış BAL
Çağatay ÇİVİCİ
Mert ÇALIŞKAN
http://bit.ly/ankarajugKAYIT
ankarajug.blogspot.com
facebook.com/ankarajug
twitter.com/ankarajug @ankarajug
#javaizmirde
3. Mert ÇALIŞKAN
10+ years of experience w/ Java
Coder @ T2.com.tr
Open Source Software Advocate, Founder, Implementor
Member of Apache Software
Foundation and OpenLogic Expert
Community
Author of
PrimeFaces Cookbook
from PacktPub
tr.linkedin.com/in/mertcaliskan @ankarajug
#javaizmirde
4. To JAVA? or NOT..? :)
Come to the Dark Side..!
@ankarajug
#javaizmirde
5. Agenda
History of Java
Versions of Java.. SE, EE and the others..
Java Web Frameworks
Better career w/ Java
Q&A
@ankarajug
#javaizmirde
6. YOU KNOW THIS TRANS-ATLANTIC?
@ankarajug
#javaizmirde
7. • RMS Titanic
sank in North Atlantic Ocean
on 15 April, 1912 on maiden voyage
So Eventually Everything Dies...!
Tragic analogy, ok :)
• You, Me, All of Us...
• Companies, Technologies...
• Key point is: You should avoid not making it like
Titanic, which sunk in 2hrs and 40 minutes...!
@ankarajug
#javaizmirde
8. Where it all began...
Founded February 24, 1982
Sold to Oracle January 27, 2010
for $7.4 billion..!
Sun was mainly selling Hardware, but they also working
on computer software like Java, MySQL and NFS..
Founded in 1977 by Larry Ellison and a couple of clever
guys, their motivation is to compete with IBM’s System R,
which was a relational database.
@ankarajug
#javaizmirde
9. James Gosling... was the
FATHER of Java
Age: 69
Age: 58
$$$ makes you look
younger..!
Larry Ellison...
is the new BOSS
@ankarajug
#javaizmirde
10. History of JAVA
Java Language Project started in June 1991
(James Gosling and his fellas)
First named as: OAK The Duke
Running byteCode on Java Virtual Machine
WORA (Write Once, Run Anywhere)
First started with applets in the WEB world
With the dawn of Java Enterprise Edition, Servlets
made their way to rule the world.
@ankarajug
#javaizmirde
11. Editions of JAVA
Java Card: application on smart cards
Micro Edition (ME): mobile phones + set-top boxes
Standard Edition (SE): Cool Software Platform The Duke
Enterprise Edition (EE): Oracle’s Enterprise Computing
Platform
Java DB: Oracle’s supported version of Apache Derby.
JavaFX: Aim was RIA (looks dead for me)
Personal Java: (discontinued) Java edition for mobile and
embedded systems based on Java 1.1.8
@ankarajug
#javaizmirde
12. CHRONOLOGY OF JAVA SE
JDK 1.0 JDK 1.1 Introducing
January 23, February 19, 1997 Abstract Window Toolkit
1996
J2SE 1.2
Swing was on Board December 8, 1998
J2SE 1.3
HotSpot JVM and JNDI
May 8, 2000
reg-ex, Java Web Start J2SE 1.4
embedded XML parser February 6, 2002
J2SE 1.5
New Cool Features on Language
September 30,
2004 Generics, AutoBoxing, var-args & etc...
@ankarajug
#javaizmirde
13. CHRONOLOGY OF JAVA SE
Renamed to Java SE instead of
Java SE 6 J2SE from now on.
December 11, 2006 Support for running scripting
lang. like Rhino.
Dynamic lang. support like
Java SE 7 Groovy
July 28, 2011
String in switch (finally!)
Best is yet to come..!
lambda expressions... Java SE 8
streaming..filtering.. Summer, 2013
closures... @ankarajug
#javaizmirde
14. Enterprise JAVA
Java EE = Java Enterprise Edition
Extends Java SE
javax.faces.* UI + JSF Related Stuff
javax.servlet.* Handling HTTP invocations
javax.enterprise.inject.* CDI, Like Spring dependency
javax.ejb.* Inj.
EJB Stuff
javax.validation.* Bean Validation
javax.persistence.* Persistency
javax.transaction.* Stuff for transactions
javax.jms.* Messaging Stuff
@ankarajug
#javaizmirde
15. CHRONOLOGY OF JAVA EE
J2EE 1.2 J2EE 1.3 J2EE 1.4
December 12, 1999 Sept. 12, 2001 Nov. 11, 2003
Servlet 2.2 Servlet 2.3 Servlet 2.4
JSP JAX-WS Java EE 5 Servlet 2.5
EJB JAX-RS May 11, 2006
JMS JAX-B
JTA JPA
JAAS JSTL Java EE 6
JSF any many December 10, 2009 Servlet 3.0
EL more...
@ankarajug
#javaizmirde
16. Java Frameworks..
Ok you get to know the language in 4 years...
But you DEFINITELY NEED to learn the
frameworks. Java is mostly about frameworks
(lots of open source ones).
I think you ask yourselves now.. Which one should
we go with?
They differ in context, if you want do WEB,
here is a list what you can find around.
@ankarajug
#javaizmirde
17. Java Frameworks..
UI Controller/Dep.Inj.
JSF Struts Spring Guice HiveMind
Spring MVC WebWork ZK picoContainer XWork
Wicket Tapestry GWT
Model/Persistence Layer
Echo3 Cocoon Vaadin
Hibernate iBatis
Integration Toplink KODO
Apache CXF Apache Axis2 IDE EclipseLink
Eclipse IntelliJ
Spring WS
IDEA
JDeveloper
NetBEANS
@ankarajug
#javaizmirde
18. One framework to rule them ALL...
Spring
@ankarajug
#javaizmirde
19. Java Frameworks..
Spring
Spring Security SpringSource OSGi Test Stubs
Spring Web Flow Spring Security Kerberos
Spring Web Services Extension Spring Social Twitter
Spring Dynamic Modules SpringSource dm Server Spring.NET CodeConfig
Spring Integration SpringSource dm Kernel Spring.NET REST Client
Spring Batch SpringSource dm Server Spring.NET Social
Spring Batch Admin Samples Spring.NET Social Dropbox
Spring.NET Spring Data Commons Spring.NET Social LinkedIn
Spring AMQP Spring Data Spring.NET Social Twitter
Spring AMQP.NET Spring Data JDBC Spring.NET Visual Studio 2010
Spring GemFire Spring Data JPA Extension
Spring GemFire for .NET Spring Data Redis Spring Social Yammer
Spring LDAP Spring Data Solr Spring Shell
Spring Social Spring Mobile Spring Data GemFire
Spring for Android Spring Data MongoDB Spring Migration Analyzer
Spring IDE Spring Data Neo4j Spring Integration Splunk
Spring BlazeDS Integration Spring Gemfire Spring Integration Print
SpringSource Bundlor Spring Data Hadoop Spring Security SAML
Spring Roo Spring Social Facebook
Spring Python Spring Social LinkedIn
@ankarajug
#javaizmirde
20. Java Frameworks..
Spring
Spring Security SpringSource OSGi Test Stubs
Spring Web Flow Spring Security Kerberos
Spring Web Services Extension Spring Social Twitter
Spring Dynamic Modules SpringSource dm Server Spring.NET CodeConfig
Spring Integration SpringSource dm Kernel Spring.NET REST Client
Spring Batch SpringSource dm Server Spring.NET Social
53
Spring Batch Admin Samples Spring.NET Social Dropbox
Spring.NET Spring Data Commons Spring.NET Social LinkedIn
Spring AMQP Spring Data Spring.NET Social Twitter
Spring AMQP.NET Spring Data JDBC Spring.NET Visual Studio 2010
Spring GemFire Spring Data JPA Extension
Spring GemFire for .NET Spring Data Redis Spring Social Yammer
Spring LDAP Spring Data Solr Spring Shell
Spring Social Spring Mobile Spring Data GemFire
Spring for Android Spring Data MongoDB Spring Migration Analyzer
Spring IDE Spring Data Neo4j Spring Integration Splunk
Spring BlazeDS Integration Spring Gemfire Spring Integration Print
SpringSource Bundlor Spring Data Hadoop Spring Security SAML
Spring Roo Spring Social Facebook
Spring Python Spring Social LinkedIn
@ankarajug
#javaizmirde
21. Head Start...!
PrimeFaces CXF Hamcrest Mockito
Spring
JPA Hibernate jUnit
DEMO
https://github.com/mulderbaba/testinfected
AppFuse
is a full-stack framework for building webapp
on the JVM.
http://appfuse.org/display/APF/AppFuse+QuickStart
@ankarajug
#javaizmirde
22. Open Source Licenses
Question here is:
But how do they license these frameworks?
How can I use them in a free way?
Open Source Initiative
@ankarajug
#javaizmirde
23. Open Source Licenses
Academic Free License 3.0 (AFL-3.0) MirOS Licence (MirOS)
Affero GNU Public License: See "GNU Affero General Public License Microsoft Public License (MS-PL)
3.0 (AGPL-3.0)" Microsoft Reciprocal License (MS-RL)
Question here is:
Adaptive Public License (APL-1.0)
Apache License 2.0 (Apache-2.0)
Apple Public Source License (APSL-2.0)
MIT license (MIT)
Motosoto License (Motosoto)
Mozilla Public License 2.0 (MPL-2.0)
But how do they license these frameworks?
Artistic license 2.0 (Artistic-2.0)
Attribution Assurance Licenses (AAL)
BSD 3-Clause "New" or "Revised" License (BSD-3-Clause)
Multics License (Multics)
NASA Open Source Agreement 1.3 (NASA-1.3)
NTP License (NTP)
How can I use them in a free way?
BSD 2-Clause "Simplified" or "FreeBSD" License (BSD-2-Clause) Naumen Public License (Naumen)
Boost Software License (BSL-1.0) Nethack General Public License (NGPL)
Computer Associates Trusted Open Source License 1.1 (CATOSL-1.1) Nokia Open Source License (Nokia)
Common Development and Distribution License 1.0 (CDDL-1.0) Non-Profit Open Software License 3.0 (NPOSL-3.0)
Common Public Attribution License 1.0 (CPAL-1.0) OCLC Research Public License 2.0 (OCLC-2.0)
CUA Office Public License Version 1.0 (CUA-OPL-1.0) Open Font License 1.1 (OFL-1.1)
EU DataGrid Software License (EUDatagrid) Open Group Test Suite License (OGTSL)
Eclipse Public License 1.0 (EPL-1.0) Open Software License 3.0 (OSL-3.0)
Educational Community License, Version 2.0 (ECL-2.0) PHP License 3.0 (PHP-3.0)
Eiffel Forum License V2.0 (EFL-2.0) The PostgreSQL License (PostgreSQL)
Entessa Public License (Entessa) Python License (Python-2.0) (overall Python license)
European Union Public License, Version 1.1 (EUPL-1.1) (links to every CNRI Python license (CNRI-Python) (CNRI portion of Python License)
language's version on their site) Q Public License (QPL-1.0)
Fair License (Fair) RealNetworks Public Source License V1.0 (RPSL-1.0)
Frameworx License (Frameworx-1.0) Reciprocal Public License 1.5 (RPL-1.5)
GNU Affero General Public License v3 (AGPL-3.0) Ricoh Source Code Public License (RSCPL)
GNU General Public License version 2.0 (GPL-2.0) Simple Public License 2.0 (SimPL-2.0)
GNU General Public License version 3.0 (GPL-3.0) Sleepycat License (Sleepycat)
GNU Library or "Lesser" General Public License version 2.1 (LGPL-2.1) Sun Public License 1.0 (SPL-1.0)
GNU Library or "Lesser" General Public License version 3.0 Sybase Open Watcom Public License 1.0 (Watcom-1.0)
(LGPL-3.0) University of Illinois/NCSA Open Source License (NCSA)
Historical Permission Notice and Disclaimer (HPND) Vovida Software License v. 1.0 (VSL-1.0)
IBM Public License 1.0 (IPL-1.0) W3C License (W3C)
IPA Font License (IPA)
ISC License (ISC) Open Source Initiative wxWindows Library License (WXwindows)
X.Net License (Xnet)
LaTeX Project Public License 1.3c (LPPL-1.3c) Zope Public License 2.0 (ZPL-2.0)
Lucent Public License Version 1.02 (LPL-1.02) zlib/libpng license (Zlib)
@ankarajug
#javaizmirde
24. Open Source Licenses
Academic Free License 3.0 (AFL-3.0) MirOS Licence (MirOS)
Affero GNU Public License: See "GNU Affero General Public License Microsoft Public License (MS-PL)
3.0 (AGPL-3.0)" Microsoft Reciprocal License (MS-RL)
Question here is:
Adaptive Public License (APL-1.0)
Apache License 2.0 (Apache-2.0)
Apple Public Source License (APSL-2.0)
MIT license (MIT)
Motosoto License (Motosoto)
Mozilla Public License 2.0 (MPL-2.0)
But how do they license these frameworks?
Artistic license 2.0 (Artistic-2.0)
Attribution Assurance Licenses (AAL)
BSD 3-Clause "New" or "Revised" License (BSD-3-Clause)
Multics License (Multics)
NASA Open Source Agreement 1.3 (NASA-1.3)
NTP License (NTP)
How can I use them in a free way?
BSD 2-Clause "Simplified" or "FreeBSD" License (BSD-2-Clause) Naumen Public License (Naumen)
Boost Software License (BSL-1.0) Nethack General Public License (NGPL)
69
Computer Associates Trusted Open Source License 1.1 (CATOSL-1.1) Nokia Open Source License (Nokia)
Common Development and Distribution License 1.0 (CDDL-1.0) Non-Profit Open Software License 3.0 (NPOSL-3.0)
Common Public Attribution License 1.0 (CPAL-1.0) OCLC Research Public License 2.0 (OCLC-2.0)
CUA Office Public License Version 1.0 (CUA-OPL-1.0) Open Font License 1.1 (OFL-1.1)
EU DataGrid Software License (EUDatagrid) Open Group Test Suite License (OGTSL)
Eclipse Public License 1.0 (EPL-1.0) Open Software License 3.0 (OSL-3.0)
Educational Community License, Version 2.0 (ECL-2.0) PHP License 3.0 (PHP-3.0)
Eiffel Forum License V2.0 (EFL-2.0) The PostgreSQL License (PostgreSQL)
Entessa Public License (Entessa) Python License (Python-2.0) (overall Python license)
European Union Public License, Version 1.1 (EUPL-1.1) (links to every CNRI Python license (CNRI-Python) (CNRI portion of Python License)
language's version on their site) Q Public License (QPL-1.0)
Fair License (Fair) RealNetworks Public Source License V1.0 (RPSL-1.0)
Frameworx License (Frameworx-1.0) Reciprocal Public License 1.5 (RPL-1.5)
GNU Affero General Public License v3 (AGPL-3.0) Ricoh Source Code Public License (RSCPL)
GNU General Public License version 2.0 (GPL-2.0) Simple Public License 2.0 (SimPL-2.0)
GNU General Public License version 3.0 (GPL-3.0) Sleepycat License (Sleepycat)
GNU Library or "Lesser" General Public License version 2.1 (LGPL-2.1) Sun Public License 1.0 (SPL-1.0)
GNU Library or "Lesser" General Public License version 3.0 Sybase Open Watcom Public License 1.0 (Watcom-1.0)
(LGPL-3.0) University of Illinois/NCSA Open Source License (NCSA)
Historical Permission Notice and Disclaimer (HPND) Vovida Software License v. 1.0 (VSL-1.0)
IBM Public License 1.0 (IPL-1.0) W3C License (W3C)
IPA Font License (IPA)
ISC License (ISC) Open Source Initiative wxWindows Library License (WXwindows)
X.Net License (Xnet)
LaTeX Project Public License 1.3c (LPPL-1.3c) Zope Public License 2.0 (ZPL-2.0)
Lucent Public License Version 1.02 (LPL-1.02) zlib/libpng license (Zlib)
@ankarajug
#javaizmirde
31. Google Summer of Code
For the love of code since 2005...
around 6000 students meet 3000 mentors of OSS from over
100 countries...
Mutual benefits : you get ~5000$, you can use the stuff for
summer internship and google gets the OSS support.
http://bit.ly/GSOC2013 @ankarajug
#javaizmirde
32. Resume Preparation
People skim resumes... So make
it to the point as much as
possible
It’s not what you know.
It’s what you’ve done with
what you know...
Keep it short
1 to 3 sentences, 1 to 3 pages
at most
@ankarajug
#javaizmirde
33. Where can I work on Java?
X
X X
X XX
X X X
X
X X X
X XX
Currently 18 technoparks located in Turkey...
@ankarajug
#javaizmirde
34. Career in JAVA
Participate in Open Source
Be a Contributor / or better: be a Committer
Learn the Language from inside out...
Oracle Certifications are one way to go...
Java SE 7 Programmer
Java EE6 Web Component Developer
Java EE6 Enterprise JavaBeans Developer
Java EE6 Java Persistence API Developer
Java EE6 Web Services Developer
Java EE 6 Enterprise Architect
@ankarajug
#javaizmirde
35. Will it Compile???
int €i = 1;
YUP...! Literals can start with letter,
connecting character like "_", and
currency character.
@ankarajug
#javaizmirde
36. Will it Compile???
int €i = 1;
YUP...! Literals can start with letter,
connecting character like "_", and
currency character.
@ankarajug
#javaizmirde
37. Will it Compile???
float f this one's double by
Nope..won't compile, = 320.0;
default.
@ankarajug
#javaizmirde
38. Will it Compile???
float f = 320.0;
Nope..won't compile, this one's double by
default.
@ankarajug
#javaizmirde
39. Will it Compile???
char c = -80;
Nope... you cannot assign int to char and
char is between 0-65535, so you will
get gibberish output.
@ankarajug
#javaizmirde
40. Will it Compile???
char c = -80;
Nope... you cannot assign int to char and
char is between 0-65535, so you will
get gibberish output.
@ankarajug
#javaizmirde
41. public final class String implements
java.io.Serializable,
java.lang.Comparable<java.lang.String>,
Can you extend String???
java.lang.CharSequence {
....
....
}
@ankarajug
#javaizmirde
42. Can you extend String???
public final class String implements
java.io.Serializable,
java.lang.Comparable<java.lang.String>,
java.lang.CharSequence {
....
....
}
@ankarajug
#javaizmirde
43. For better career...
Experience Communication
Knowledge
Professionalism Creativity
@ankarajug
#javaizmirde
44. For better career...
Know broad... Know deep...
Experience Communication
Knowledge
Professionalism Creativity
If you know Java then dive into the frameworks.. If you
know all of them go through scripting languages...
Know you stuff very well... @ankarajug
#javaizmirde
45. For better career...
Stay Current... Use your knowledge...
Experience Communication
Knowledge
Professionalism Creativity
Practice... Practice... Practice...
@ankarajug
#javaizmirde
46. For better career...
Be Open-Minded...
Experience Communication
Knowledge
Professionalism Creativity
Listen to people’s thoughts.. They’re more
valuable than you think.. You CANNOT know
everything..! @ankarajug
#javaizmirde
47. For better career...
Reject the status quo...
Experience Communication
Knowledge
Professionalism Creativity
Don’t be a rebellion but don’t kill
the rebellion inside you...
@ankarajug
#javaizmirde
48. For better career...
Take and accept the responsibility...
Experience Communication
Knowledge
Professionalism Creativity
Make it all in a classy way...
@ankarajug
#javaizmirde
49. To sum up on career...
You are the one that will be building
your OWN career.
Work for your employer and work for yourself also...
Take the time to build your skills:
your knowledge, your communication skills, your
experience.
And don’t kill the child inside you, make it creative as
always...
Act Professional, because you have to be a ONE..!
@ankarajug
#javaizmirde
50. To sum up...
JAVA is still HOT TOPIC...
Read Read Read...
Participate...Be Active...Be a part of JAVA :)
Oracle is investing on Java so best is yet to come.
Take a leap,
dive into Java,
build your career on it.
@ankarajug
#javaizmirde