SlideShare a Scribd company logo
@aalmiray #DevoxxPL
JAVA LIBRARIES
YOU CANโ€™T
AFFORD TO MISS
ANDRES ALMIRAY
@AALMIRAY
@aalmiray #DevoxxPL
@aalmiray #DevoxxPL
DEPENDENCY
INJECTION
@aalmiray #DevoxxPL
Guice - https://github.com/google/guice
Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(Engine.class).annotatedWith(named("efficient"))
.to(FusionPoweredEngine.class)
bind(Engine.class).annotatedWith(named("poor"))
.to(CoalPoweredEngine.class)
}
});
Key key = Key.of(Engine.class, named("poor"));
Engine engine = injector.getInstance(key);
// do something with engine	
 ย 
@aalmiray #DevoxxPL
Spring - http://projects.spring.io/spring-framework/
โ€ขโ€ฏ More than just dependency injection
โ€ขโ€ฏ Assertions
โ€ขโ€ฏ MessageSource + MessageFormat
โ€ขโ€ฏ Serialization
โ€ขโ€ฏ JDBC, JPA
โ€ขโ€ฏ JMX
โ€ขโ€ฏ Validation
โ€ขโ€ฏ Scheduling
โ€ขโ€ฏ Testing
@aalmiray #DevoxxPL
BEHAVIOR
@aalmiray #DevoxxPL
SLF4J - http://www.slf4j.org/
โ€ขโ€ฏ Wraps all other logging frameworks:
โ€ขโ€ฏ java.util.logging
โ€ขโ€ฏ Apache commons logging
โ€ขโ€ฏ Log4j
โ€ขโ€ฏ Provides varargs methods
@aalmiray #DevoxxPL
Guava - https://github.com/google/guava
โ€ขโ€ฏ New Collections:
โ€ขโ€ฏ MultiSet
โ€ขโ€ฏ BiMap
โ€ขโ€ฏ MultiMap
โ€ขโ€ฏ Table
โ€ขโ€ฏ Utility classes for Collections
โ€ขโ€ฏ Utility classes for String
โ€ขโ€ฏ Caches
โ€ขโ€ฏ Reflection
โ€ขโ€ฏ I/O
โ€ขโ€ฏ Functional programming support (JDK6+)
@aalmiray #DevoxxPL
OkHttp - http://square.github.io/okhttp/
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
@aalmiray #DevoxxPL
RxJava - http://reactivex.io/
Observable<Repository> observable = github.repositories(model.getOrganization());
if (model.getLimit() > 0) {
observable = observable.take(model.getLimit());
}
Subscription subscription = observable
.timeout(10, TimeUnit.SECONDS)
.doOnSubscribe(() -> model.setState(RUNNING))
.doOnTerminate(() -> model.setState(READY))
.subscribeOn(Schedulers.io())
.subscribe(
model.getRepositories()::add,
Throwable::printStackTrace);
model.setSubscription(subscription);
@aalmiray #DevoxxPL
Retrofit - http://square.github.io/retrofit/
public interface GithubAPI {
@GET("/orgs/{name}/repos")
Call<List<Repository>> repositories(@Path("name") String name);
@GET
Call<List<Repository>>> repositoriesPaginate(@Url String url);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.addConverterFactory(JacksonConverterFactory.create(objectMapper))
.build();
return retrofit.create(GithubAPI.class);
@aalmiray #DevoxxPL
Retrofit + RxJava
public interface GithubAPI {
@GET("/orgs/{name}/repos")
Observable<Response<List<Repository>>> repositories(@Path("name") String
name);
@GET
Observable<Response<List<Repository>>> repositoriesPaginate(@Url String url);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.addConverterFactory(JacksonConverterFactory.create(objectMapper))
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
return retrofit.create(GithubAPI.class);
@aalmiray #DevoxxPL
JDeferred - http://jdeferred.org/
model.setState(RUNNING);
int limit = model.getLimit();
limit = limit > 0 ? limit : Integer.MAX_VALUE;
Promise<Collection<Repository>, Throwable, Repository> promise =
github.repositories(model.getOrganization(), limit);
promise.progress(model.getRepositories()::add)
.fail(Throwable::printStackTrace)
.always((state, resolved, rejected) -> model.setState(READY));
@aalmiray #DevoxxPL
MBassador - https://github.com/bennidi/mbassador
public class EventHandler {
private static final Logger LOG = LoggerFactory.getLogger(EventHandler.class);
@Inject
private net.engio.mbassy.bus.MBassador<ApplicationEvent> eventBus;
@net.engio.mbassy.listener.Handler
public void handleNewInstance(NewInstanceEvent event) {
LOG.trace("New instance created {}", event.getInstance());
}
public void createInstance() {
eventBus.publish(new NewInstanceEvent(Person.builder()
.name("Andres")
.lastname("Almiray")
.build()));
}
}
@aalmiray #DevoxxPL
BYTECODE/
AST
@aalmiray #DevoxxPL
Lombok - https://projectlombok.org/
import javax.annotation.Nonnull;
@lombok.Data
public class Person {
private final String name;
private final String lastname;
@Nonnull
@lombok.Builder
public static Person create(@Nonnull String name, @Nonnull String lastname) {
return new Person(name, lastname);
}
}
@lombok.Data
@lombok.EqualsAndHashCode(callSuper = true)
@lombok.ToString(callSuper = true)
public class NewInstanceEvent extends ApplicationEvent {
@javax.annotation.Nonnull
private final Object instance;
}
@aalmiray #DevoxxPL
ByteBuddy - http://bytebuddy.net
public class Foo {
public String bar() { return null; }
public String foo() { return null; }
public String foo(Object o) { return null; }
}
Foo dynamicFoo = new ByteBuddy()
.subclass(Foo.class)
.method(isDeclaredBy(Foo.class)).intercept(FixedValue.value("One!"))
.method(named("foo")).intercept(FixedValue.value("Two!"))
.method(named("foo").and(takesArguments(1)))
.intercept(FixedValue.value("Three!"))
.make()
.load(getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded()
.newInstance();
@aalmiray #DevoxxPL
TESTING
@aalmiray #DevoxxPL
JUnitParams - https://github.com/Pragmatists/JUnitParams
@RunWith(JUnitParamsRunner.class)
@TestFor(SampleService.class)
public class SampleServiceTest {
private SampleService service;
@Rule
public final GriffonUnitRule griffon = new GriffonUnitRule();
@Test
@Parameters({",Howdy stranger!",
"Test, Hello Test"})
public void sayHello(String input, String output) {
assertThat(service.sayHello(input), equalTo(output));
}
}	
 ย 
@aalmiray #DevoxxPL
Mockito - http://mockito.org/
@Test @Parameters({",Howdy stranger!", "Test, Hello Test"})
public void sayHelloAction(String input, String output) {
// given:
SampleController controller = new SampleController();
controller.setModel(new SampleModel());
controller.setService(mock(SampleService.class));
// expectations
when(controller.getService().sayHello(input)).thenReturn(output);
// when:
controller.getModel().setInput(input);
controller.sayHello();
// then:
assertThat(controller.getModel().getOutput(), equalTo(output));
verify(controller.getService(), only()).sayHello(input);
}	
 ย 
@aalmiray #DevoxxPL
Jukito - https://github.com/ArcBees/Jukito
@RunWith(JukitoRunner.class)
public class SampleControllerJukitoTest {
@Inject private SampleController controller;
@Before
public void setupMocks(SampleService sampleService) {
when(sampleService.sayHello("Test")).thenReturn("Hello Test");
}
@Test
public void sayHelloAction() {
controller.setModel(new SampleModel());
controller.getModel().setInput("Test");
controller.sayHello();
assertThat(controller.getModel().getOutput(),
equalTo("Hello Test"));
verify(controller.getService(), only()).sayHello("Test");
}
}	
 ย 
@aalmiray #DevoxxPL
Spock- http://spockframework.org/
@spock.lang.Unroll
class SampleControllerSpec extends spock.lang.Specification {
def "Invoke say hello with #input results in #output"() {
given:
SampleController controller = new SampleController()
controller.model = new SampleModel()
controller.service = Mock(SampleService) {
sayHello(input) >> output
}
when:
controller.model.input = input
controller.sayHello()
then:
controller.model.output == output
where:
input << ['', 'Test']
output << ['Howdy, stranger!', 'Hello Test']
}
}	
 ย 
@aalmiray #DevoxxPL
Awaitility - https://github.com/awaitility/awaitility
@Test @Parameters({",Howdy stranger!โ€, "Test, Hello Test"})
public void sayHelloAction(String input, String output) {
// given:
SampleModel model = mvcGroupManager.findModel("sample", SampleModel.class);
SampleController controller = mvcGroupManager.findController("sample",
SampleController.class);
// expect:
assertThat(model.getOutput(), nullValue());
// when:
model.setInput(input);
controller.invokeAction("sayHello");
// then:
await().until(() -> model.getOutput(), notNullValue());
assertThat(model.getOutput(), equalTo(output));
}	
 ย 
@aalmiray #DevoxxPL
Rest-assured - https://github.com/rest-assured/rest-assured
get("/lotto").then().assertThat().body("lotto.lottoId",	
 ย equalTo(5));	
 ย 
	
 ย 
given().	
 ย 
	
 ย 	
 ย 	
 ย 	
 ย param("key1",	
 ย "value1").	
 ย 
	
 ย 	
 ย 	
 ย 	
 ย param("key2",	
 ย "value2").	
 ย 
when().	
 ย 
	
 ย 	
 ย 	
 ย 	
 ย post("/somewhere").	
 ย 
then().	
 ย 
	
 ย 	
 ย 	
 ย 	
 ย body(containsString("OK"));	
 ย 
	
 ย 
	
 ย 
* Includes JsonPath and XmlPath support
@aalmiray #DevoxxPL
HONORARY
MENTIONS
@aalmiray #DevoxxPL
Okio - https://github.com/square/okio
HikariCP - https://github.com/brettwooldridge/HikariCP
gRPC - http://www.grpc.io/
Kryo - https://github.com/EsotericSoftware/kryo
MockServer - http://www.mock-server.com/
@aalmiray #DevoxxPL
THANK YOU!
ANDRES ALMIRAY
@AALMIRAY
Ad

More Related Content

What's hot (20)

Powerful JavaScript Tips and Best Practices
Powerful JavaScript Tips and Best PracticesPowerful JavaScript Tips and Best Practices
Powerful JavaScript Tips and Best Practices
Dragos Ionita
ย 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7
Dongho Cho
ย 
Spring & Hibernate
Spring & HibernateSpring & Hibernate
Spring & Hibernate
Jiayun Zhou
ย 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
Kiyotaka Oku
ย 
Spock
SpockSpock
Spock
Evgeny Borisov
ย 
JEEConf 2017 - The hitchhikerโ€™s guide to Java class reloading
JEEConf 2017 - The hitchhikerโ€™s guide to Java class reloadingJEEConf 2017 - The hitchhikerโ€™s guide to Java class reloading
JEEConf 2017 - The hitchhikerโ€™s guide to Java class reloading
Anton Arhipov
ย 
Jggug 2010 330 Grails 1.3 ่ฆณๅฏŸ
Jggug 2010 330 Grails 1.3 ่ฆณๅฏŸJggug 2010 330 Grails 1.3 ่ฆณๅฏŸ
Jggug 2010 330 Grails 1.3 ่ฆณๅฏŸ
Tsuyoshi Yamamoto
ย 
Bytecode manipulation with Javassist and ASM
Bytecode manipulation with Javassist and ASMBytecode manipulation with Javassist and ASM
Bytecode manipulation with Javassist and ASM
ashleypuls
ย 
Spock: A Highly Logical Way To Test
Spock: A Highly Logical Way To TestSpock: A Highly Logical Way To Test
Spock: A Highly Logical Way To Test
Howard Lewis Ship
ย 
Using Reflections and Automatic Code Generation
Using Reflections and Automatic Code GenerationUsing Reflections and Automatic Code Generation
Using Reflections and Automatic Code Generation
Ivan Dolgushin
ย 
Event driven javascript
Event driven javascriptEvent driven javascript
Event driven javascript
Francesca1980
ย 
JRuby @ Boulder Ruby
JRuby @ Boulder RubyJRuby @ Boulder Ruby
JRuby @ Boulder Ruby
Nick Sieger
ย 
Reactive Access to MongoDB from Scala
Reactive Access to MongoDB from ScalaReactive Access to MongoDB from Scala
Reactive Access to MongoDB from Scala
Hermann Hueck
ย 
Celery
CeleryCelery
Celery
ร’scar Vilaplana
ย 
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modules
Rafael Winterhalter
ย 
A JIT Smalltalk VM written in itself
A JIT Smalltalk VM written in itselfA JIT Smalltalk VM written in itself
A JIT Smalltalk VM written in itself
ESUG
ย 
Whatโ€™s new in C# 6
Whatโ€™s new in C# 6Whatโ€™s new in C# 6
Whatโ€™s new in C# 6
Fiyaz Hasan
ย 
JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for Dummies
Charles Nutter
ย 
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
Dmitry Soshnikov
ย 
To inject or not to inject: CDI is the question
To inject or not to inject: CDI is the questionTo inject or not to inject: CDI is the question
To inject or not to inject: CDI is the question
Antonio Goncalves
ย 
Powerful JavaScript Tips and Best Practices
Powerful JavaScript Tips and Best PracticesPowerful JavaScript Tips and Best Practices
Powerful JavaScript Tips and Best Practices
Dragos Ionita
ย 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7
Dongho Cho
ย 
Spring & Hibernate
Spring & HibernateSpring & Hibernate
Spring & Hibernate
Jiayun Zhou
ย 
JJUG CCC 2011 Spring
JJUG CCC 2011 SpringJJUG CCC 2011 Spring
JJUG CCC 2011 Spring
Kiyotaka Oku
ย 
JEEConf 2017 - The hitchhikerโ€™s guide to Java class reloading
JEEConf 2017 - The hitchhikerโ€™s guide to Java class reloadingJEEConf 2017 - The hitchhikerโ€™s guide to Java class reloading
JEEConf 2017 - The hitchhikerโ€™s guide to Java class reloading
Anton Arhipov
ย 
Jggug 2010 330 Grails 1.3 ่ฆณๅฏŸ
Jggug 2010 330 Grails 1.3 ่ฆณๅฏŸJggug 2010 330 Grails 1.3 ่ฆณๅฏŸ
Jggug 2010 330 Grails 1.3 ่ฆณๅฏŸ
Tsuyoshi Yamamoto
ย 
Bytecode manipulation with Javassist and ASM
Bytecode manipulation with Javassist and ASMBytecode manipulation with Javassist and ASM
Bytecode manipulation with Javassist and ASM
ashleypuls
ย 
Spock: A Highly Logical Way To Test
Spock: A Highly Logical Way To TestSpock: A Highly Logical Way To Test
Spock: A Highly Logical Way To Test
Howard Lewis Ship
ย 
Using Reflections and Automatic Code Generation
Using Reflections and Automatic Code GenerationUsing Reflections and Automatic Code Generation
Using Reflections and Automatic Code Generation
Ivan Dolgushin
ย 
Event driven javascript
Event driven javascriptEvent driven javascript
Event driven javascript
Francesca1980
ย 
JRuby @ Boulder Ruby
JRuby @ Boulder RubyJRuby @ Boulder Ruby
JRuby @ Boulder Ruby
Nick Sieger
ย 
Reactive Access to MongoDB from Scala
Reactive Access to MongoDB from ScalaReactive Access to MongoDB from Scala
Reactive Access to MongoDB from Scala
Hermann Hueck
ย 
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modules
Rafael Winterhalter
ย 
A JIT Smalltalk VM written in itself
A JIT Smalltalk VM written in itselfA JIT Smalltalk VM written in itself
A JIT Smalltalk VM written in itself
ESUG
ย 
Whatโ€™s new in C# 6
Whatโ€™s new in C# 6Whatโ€™s new in C# 6
Whatโ€™s new in C# 6
Fiyaz Hasan
ย 
JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for Dummies
Charles Nutter
ย 
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
Dmitry Soshnikov
ย 
To inject or not to inject: CDI is the question
To inject or not to inject: CDI is the questionTo inject or not to inject: CDI is the question
To inject or not to inject: CDI is the question
Antonio Goncalves
ย 

Viewers also liked (20)

2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2
Kazuhiro Wada
ย 
VMใฎๆญฉใ‚€้“ใ€‚ Dalvikใ€ARTใ€ใใ—ใฆJava VM
VMใฎๆญฉใ‚€้“ใ€‚ Dalvikใ€ARTใ€ใใ—ใฆJava VMVMใฎๆญฉใ‚€้“ใ€‚ Dalvikใ€ARTใ€ใใ—ใฆJava VM
VMใฎๆญฉใ‚€้“ใ€‚ Dalvikใ€ARTใ€ใใ—ใฆJava VM
yy yank
ย 
U-NEXTๅญฆ็”Ÿใ‚คใƒณใ‚ฟใƒผใƒณใ€้Žๆฟ€ใชJavaใฎๅญฆใณๆ–นใจ้Žๆฟ€ใช่ฆๆฑ‚
U-NEXTๅญฆ็”Ÿใ‚คใƒณใ‚ฟใƒผใƒณใ€้Žๆฟ€ใชJavaใฎๅญฆใณๆ–นใจ้Žๆฟ€ใช่ฆๆฑ‚U-NEXTๅญฆ็”Ÿใ‚คใƒณใ‚ฟใƒผใƒณใ€้Žๆฟ€ใชJavaใฎๅญฆใณๆ–นใจ้Žๆฟ€ใช่ฆๆฑ‚
U-NEXTๅญฆ็”Ÿใ‚คใƒณใ‚ฟใƒผใƒณใ€้Žๆฟ€ใชJavaใฎๅญฆใณๆ–นใจ้Žๆฟ€ใช่ฆๆฑ‚
hajime funaki
ย 
Jjug ccc
Jjug cccJjug ccc
Jjug ccc
Tanaka Yuichi
ย 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
ย 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
Ikuru Kanuma
ย 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
Logico
ย 
SpotBugs(FindBugs)ใซใ‚ˆใ‚‹ ๅคง่ฆๆจกERPใฎใ‚ณใƒผใƒ‰ๅ“่ณชๆ”นๅ–„
SpotBugs(FindBugs)ใซใ‚ˆใ‚‹ ๅคง่ฆๆจกERPใฎใ‚ณใƒผใƒ‰ๅ“่ณชๆ”นๅ–„SpotBugs(FindBugs)ใซใ‚ˆใ‚‹ ๅคง่ฆๆจกERPใฎใ‚ณใƒผใƒ‰ๅ“่ณชๆ”นๅ–„
SpotBugs(FindBugs)ใซใ‚ˆใ‚‹ ๅคง่ฆๆจกERPใฎใ‚ณใƒผใƒ‰ๅ“่ณชๆ”นๅ–„
Works Applications
ย 
Java Clientใงๅ…ฅ้–€ใ™ใ‚‹ Apache Kafka #jjug_ccc #ccc_e2
Java Clientใงๅ…ฅ้–€ใ™ใ‚‹ Apache Kafka #jjug_ccc #ccc_e2Java Clientใงๅ…ฅ้–€ใ™ใ‚‹ Apache Kafka #jjug_ccc #ccc_e2
Java Clientใงๅ…ฅ้–€ใ™ใ‚‹ Apache Kafka #jjug_ccc #ccc_e2
Yahoo!ใƒ‡ใƒ™ใƒญใƒƒใƒ‘ใƒผใƒใƒƒใƒˆใƒฏใƒผใ‚ฏ
ย 
ๆ–ฐๅ’2ๅนด็›ฎใ‹ใ‚‰ๅง‹ใ‚ใ‚‹OSSใฎใ‚นใ‚นใƒก~ๆ˜Žๆ—ฅใ‹ใ‚‰ใงใใ‚‹ใ‚ณใƒŸใƒƒใƒˆใƒ‡ใƒ“ใƒฅใƒผ~
ๆ–ฐๅ’2ๅนด็›ฎใ‹ใ‚‰ๅง‹ใ‚ใ‚‹OSSใฎใ‚นใ‚นใƒก~ๆ˜Žๆ—ฅใ‹ใ‚‰ใงใใ‚‹ใ‚ณใƒŸใƒƒใƒˆใƒ‡ใƒ“ใƒฅใƒผ~ๆ–ฐๅ’2ๅนด็›ฎใ‹ใ‚‰ๅง‹ใ‚ใ‚‹OSSใฎใ‚นใ‚นใƒก~ๆ˜Žๆ—ฅใ‹ใ‚‰ใงใใ‚‹ใ‚ณใƒŸใƒƒใƒˆใƒ‡ใƒ“ใƒฅใƒผ~
ๆ–ฐๅ’2ๅนด็›ฎใ‹ใ‚‰ๅง‹ใ‚ใ‚‹OSSใฎใ‚นใ‚นใƒก~ๆ˜Žๆ—ฅใ‹ใ‚‰ใงใใ‚‹ใ‚ณใƒŸใƒƒใƒˆใƒ‡ใƒ“ใƒฅใƒผ~
Yoshio Kajikuri
ย 
Javaใƒใƒงใƒƒใƒˆใƒ‡ใ‚ญใƒซใธใฎ้“ใ€œJavaใ‚ณใ‚ขSDKใซ่ฆ‹ใ‚‹็œŸไผผใ—ใŸใ„ใ‚ณใƒผใƒ‰10้ธใ€œ
Javaใƒใƒงใƒƒใƒˆใƒ‡ใ‚ญใƒซใธใฎ้“ใ€œJavaใ‚ณใ‚ขSDKใซ่ฆ‹ใ‚‹็œŸไผผใ—ใŸใ„ใ‚ณใƒผใƒ‰10้ธใ€œJavaใƒใƒงใƒƒใƒˆใƒ‡ใ‚ญใƒซใธใฎ้“ใ€œJavaใ‚ณใ‚ขSDKใซ่ฆ‹ใ‚‹็œŸไผผใ—ใŸใ„ใ‚ณใƒผใƒ‰10้ธใ€œ
Javaใƒใƒงใƒƒใƒˆใƒ‡ใ‚ญใƒซใธใฎ้“ใ€œJavaใ‚ณใ‚ขSDKใซ่ฆ‹ใ‚‹็œŸไผผใ—ใŸใ„ใ‚ณใƒผใƒ‰10้ธใ€œ
JustSystems Corporation
ย 
ๆ—ฅๆœฌJavaใ‚ฐใƒซใƒผใƒ—2017ๅนดๅฎšๆœŸ็ทไผš #jjug
ๆ—ฅๆœฌJavaใ‚ฐใƒซใƒผใƒ—2017ๅนดๅฎšๆœŸ็ทไผš #jjug ๆ—ฅๆœฌJavaใ‚ฐใƒซใƒผใƒ—2017ๅนดๅฎšๆœŸ็ทไผš #jjug
ๆ—ฅๆœฌJavaใ‚ฐใƒซใƒผใƒ—2017ๅนดๅฎšๆœŸ็ทไผš #jjug
ๆ—ฅๆœฌJavaใƒฆใƒผใ‚ถใƒผใ‚ฐใƒซใƒผใƒ—
ย 
JJUG CCC 2017 Spring Seasar2ใ‹ใ‚‰Springใธ็งป่กŒใ—ใŸไฟบใŸใกใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๆญฉใฟๅง‹ใ‚ใŸ
JJUG CCC 2017 Spring Seasar2ใ‹ใ‚‰Springใธ็งป่กŒใ—ใŸไฟบใŸใกใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๆญฉใฟๅง‹ใ‚ใŸJJUG CCC 2017 Spring Seasar2ใ‹ใ‚‰Springใธ็งป่กŒใ—ใŸไฟบใŸใกใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๆญฉใฟๅง‹ใ‚ใŸ
JJUG CCC 2017 Spring Seasar2ใ‹ใ‚‰Springใธ็งป่กŒใ—ใŸไฟบใŸใกใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๆญฉใฟๅง‹ใ‚ใŸ
Koichi Sakata
ย 
ใƒ‡ใƒผใ‚ฟๅฑฅๆญด็ฎก็†ใฎใŸใ‚ใฎใƒ†ใƒณใƒใƒฉใƒซใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใจReladomoใฎ็ดนไป‹ #jjug_ccc #ccc_g3
ใƒ‡ใƒผใ‚ฟๅฑฅๆญด็ฎก็†ใฎใŸใ‚ใฎใƒ†ใƒณใƒใƒฉใƒซใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใจReladomoใฎ็ดนไป‹ #jjug_ccc #ccc_g3 ใƒ‡ใƒผใ‚ฟๅฑฅๆญด็ฎก็†ใฎใŸใ‚ใฎใƒ†ใƒณใƒใƒฉใƒซใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใจReladomoใฎ็ดนไป‹ #jjug_ccc #ccc_g3
ใƒ‡ใƒผใ‚ฟๅฑฅๆญด็ฎก็†ใฎใŸใ‚ใฎใƒ†ใƒณใƒใƒฉใƒซใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใจReladomoใฎ็ดนไป‹ #jjug_ccc #ccc_g3
Hiroshi Ito
ย 
Java8็งป่กŒใฏๆ€–ใใชใ„๏ฝžใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บๆกˆไปถใงใฎJava8็งป่กŒไบ‹ไพ‹๏ฝž
Java8็งป่กŒใฏๆ€–ใใชใ„๏ฝžใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บๆกˆไปถใงใฎJava8็งป่กŒไบ‹ไพ‹๏ฝžJava8็งป่กŒใฏๆ€–ใใชใ„๏ฝžใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บๆกˆไปถใงใฎJava8็งป่กŒไบ‹ไพ‹๏ฝž
Java8็งป่กŒใฏๆ€–ใใชใ„๏ฝžใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บๆกˆไปถใงใฎJava8็งป่กŒไบ‹ไพ‹๏ฝž
Hiroyuki Ohnaka
ย 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project Jigsaw
Yuichi Sakuraba
ย 
ใ‚ฏใ‚™ใƒฉใƒ•ใƒ†ใ‚™ใƒผใ‚ฟใƒ˜ใ‚™ใƒผใ‚นๅ…ฅ้–€
ใ‚ฏใ‚™ใƒฉใƒ•ใƒ†ใ‚™ใƒผใ‚ฟใƒ˜ใ‚™ใƒผใ‚นๅ…ฅ้–€ใ‚ฏใ‚™ใƒฉใƒ•ใƒ†ใ‚™ใƒผใ‚ฟใƒ˜ใ‚™ใƒผใ‚นๅ…ฅ้–€
ใ‚ฏใ‚™ใƒฉใƒ•ใƒ†ใ‚™ใƒผใ‚ฟใƒ˜ใ‚™ใƒผใ‚นๅ…ฅ้–€
Masaya Dake
ย 
ๆ€ใฃใŸใปใฉๆ€–ใใชใ„๏ผ Haskell on JVM ่ถ…ๅ…ฅ้–€ #jjug_ccc #ccc_l8
ๆ€ใฃใŸใปใฉๆ€–ใใชใ„๏ผ Haskell on JVM ่ถ…ๅ…ฅ้–€ #jjug_ccc #ccc_l8ๆ€ใฃใŸใปใฉๆ€–ใใชใ„๏ผ Haskell on JVM ่ถ…ๅ…ฅ้–€ #jjug_ccc #ccc_l8
ๆ€ใฃใŸใปใฉๆ€–ใใชใ„๏ผ Haskell on JVM ่ถ…ๅ…ฅ้–€ #jjug_ccc #ccc_l8
y_taka_23
ย 
Java8 ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น and NetBeansใฎใƒกใƒขใƒชใƒญใ‚ฐใ‹ใ‚‰...
Java8 ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น and NetBeansใฎใƒกใƒขใƒชใƒญใ‚ฐใ‹ใ‚‰...Java8 ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น and NetBeansใฎใƒกใƒขใƒชใƒญใ‚ฐใ‹ใ‚‰...
Java8 ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น and NetBeansใฎใƒกใƒขใƒชใƒญใ‚ฐใ‹ใ‚‰...
ใชใŠใ ใใ—ใ 
ย 
ใƒคใƒ•ใƒผใฎๅบƒๅ‘Šใƒฌใƒใƒผใƒˆใ‚ทใ‚นใƒ†ใƒ ใ‚’Spring Cloud StreamๅŒ–ใ™ใ‚‹ใพใง #jjug_ccc #ccc_a4
ใƒคใƒ•ใƒผใฎๅบƒๅ‘Šใƒฌใƒใƒผใƒˆใ‚ทใ‚นใƒ†ใƒ ใ‚’Spring Cloud StreamๅŒ–ใ™ใ‚‹ใพใง #jjug_ccc #ccc_a4ใƒคใƒ•ใƒผใฎๅบƒๅ‘Šใƒฌใƒใƒผใƒˆใ‚ทใ‚นใƒ†ใƒ ใ‚’Spring Cloud StreamๅŒ–ใ™ใ‚‹ใพใง #jjug_ccc #ccc_a4
ใƒคใƒ•ใƒผใฎๅบƒๅ‘Šใƒฌใƒใƒผใƒˆใ‚ทใ‚นใƒ†ใƒ ใ‚’Spring Cloud StreamๅŒ–ใ™ใ‚‹ใพใง #jjug_ccc #ccc_a4
Yahoo!ใƒ‡ใƒ™ใƒญใƒƒใƒ‘ใƒผใƒใƒƒใƒˆใƒฏใƒผใ‚ฏ
ย 
2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2
Kazuhiro Wada
ย 
VMใฎๆญฉใ‚€้“ใ€‚ Dalvikใ€ARTใ€ใใ—ใฆJava VM
VMใฎๆญฉใ‚€้“ใ€‚ Dalvikใ€ARTใ€ใใ—ใฆJava VMVMใฎๆญฉใ‚€้“ใ€‚ Dalvikใ€ARTใ€ใใ—ใฆJava VM
VMใฎๆญฉใ‚€้“ใ€‚ Dalvikใ€ARTใ€ใใ—ใฆJava VM
yy yank
ย 
U-NEXTๅญฆ็”Ÿใ‚คใƒณใ‚ฟใƒผใƒณใ€้Žๆฟ€ใชJavaใฎๅญฆใณๆ–นใจ้Žๆฟ€ใช่ฆๆฑ‚
U-NEXTๅญฆ็”Ÿใ‚คใƒณใ‚ฟใƒผใƒณใ€้Žๆฟ€ใชJavaใฎๅญฆใณๆ–นใจ้Žๆฟ€ใช่ฆๆฑ‚U-NEXTๅญฆ็”Ÿใ‚คใƒณใ‚ฟใƒผใƒณใ€้Žๆฟ€ใชJavaใฎๅญฆใณๆ–นใจ้Žๆฟ€ใช่ฆๆฑ‚
U-NEXTๅญฆ็”Ÿใ‚คใƒณใ‚ฟใƒผใƒณใ€้Žๆฟ€ใชJavaใฎๅญฆใณๆ–นใจ้Žๆฟ€ใช่ฆๆฑ‚
hajime funaki
ย 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
ย 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
Ikuru Kanuma
ย 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
Logico
ย 
SpotBugs(FindBugs)ใซใ‚ˆใ‚‹ ๅคง่ฆๆจกERPใฎใ‚ณใƒผใƒ‰ๅ“่ณชๆ”นๅ–„
SpotBugs(FindBugs)ใซใ‚ˆใ‚‹ ๅคง่ฆๆจกERPใฎใ‚ณใƒผใƒ‰ๅ“่ณชๆ”นๅ–„SpotBugs(FindBugs)ใซใ‚ˆใ‚‹ ๅคง่ฆๆจกERPใฎใ‚ณใƒผใƒ‰ๅ“่ณชๆ”นๅ–„
SpotBugs(FindBugs)ใซใ‚ˆใ‚‹ ๅคง่ฆๆจกERPใฎใ‚ณใƒผใƒ‰ๅ“่ณชๆ”นๅ–„
Works Applications
ย 
ๆ–ฐๅ’2ๅนด็›ฎใ‹ใ‚‰ๅง‹ใ‚ใ‚‹OSSใฎใ‚นใ‚นใƒก~ๆ˜Žๆ—ฅใ‹ใ‚‰ใงใใ‚‹ใ‚ณใƒŸใƒƒใƒˆใƒ‡ใƒ“ใƒฅใƒผ~
ๆ–ฐๅ’2ๅนด็›ฎใ‹ใ‚‰ๅง‹ใ‚ใ‚‹OSSใฎใ‚นใ‚นใƒก~ๆ˜Žๆ—ฅใ‹ใ‚‰ใงใใ‚‹ใ‚ณใƒŸใƒƒใƒˆใƒ‡ใƒ“ใƒฅใƒผ~ๆ–ฐๅ’2ๅนด็›ฎใ‹ใ‚‰ๅง‹ใ‚ใ‚‹OSSใฎใ‚นใ‚นใƒก~ๆ˜Žๆ—ฅใ‹ใ‚‰ใงใใ‚‹ใ‚ณใƒŸใƒƒใƒˆใƒ‡ใƒ“ใƒฅใƒผ~
ๆ–ฐๅ’2ๅนด็›ฎใ‹ใ‚‰ๅง‹ใ‚ใ‚‹OSSใฎใ‚นใ‚นใƒก~ๆ˜Žๆ—ฅใ‹ใ‚‰ใงใใ‚‹ใ‚ณใƒŸใƒƒใƒˆใƒ‡ใƒ“ใƒฅใƒผ~
Yoshio Kajikuri
ย 
Javaใƒใƒงใƒƒใƒˆใƒ‡ใ‚ญใƒซใธใฎ้“ใ€œJavaใ‚ณใ‚ขSDKใซ่ฆ‹ใ‚‹็œŸไผผใ—ใŸใ„ใ‚ณใƒผใƒ‰10้ธใ€œ
Javaใƒใƒงใƒƒใƒˆใƒ‡ใ‚ญใƒซใธใฎ้“ใ€œJavaใ‚ณใ‚ขSDKใซ่ฆ‹ใ‚‹็œŸไผผใ—ใŸใ„ใ‚ณใƒผใƒ‰10้ธใ€œJavaใƒใƒงใƒƒใƒˆใƒ‡ใ‚ญใƒซใธใฎ้“ใ€œJavaใ‚ณใ‚ขSDKใซ่ฆ‹ใ‚‹็œŸไผผใ—ใŸใ„ใ‚ณใƒผใƒ‰10้ธใ€œ
Javaใƒใƒงใƒƒใƒˆใƒ‡ใ‚ญใƒซใธใฎ้“ใ€œJavaใ‚ณใ‚ขSDKใซ่ฆ‹ใ‚‹็œŸไผผใ—ใŸใ„ใ‚ณใƒผใƒ‰10้ธใ€œ
JustSystems Corporation
ย 
JJUG CCC 2017 Spring Seasar2ใ‹ใ‚‰Springใธ็งป่กŒใ—ใŸไฟบใŸใกใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๆญฉใฟๅง‹ใ‚ใŸ
JJUG CCC 2017 Spring Seasar2ใ‹ใ‚‰Springใธ็งป่กŒใ—ใŸไฟบใŸใกใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๆญฉใฟๅง‹ใ‚ใŸJJUG CCC 2017 Spring Seasar2ใ‹ใ‚‰Springใธ็งป่กŒใ—ใŸไฟบใŸใกใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๆญฉใฟๅง‹ใ‚ใŸ
JJUG CCC 2017 Spring Seasar2ใ‹ใ‚‰Springใธ็งป่กŒใ—ใŸไฟบใŸใกใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚นใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใธๆญฉใฟๅง‹ใ‚ใŸ
Koichi Sakata
ย 
ใƒ‡ใƒผใ‚ฟๅฑฅๆญด็ฎก็†ใฎใŸใ‚ใฎใƒ†ใƒณใƒใƒฉใƒซใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใจReladomoใฎ็ดนไป‹ #jjug_ccc #ccc_g3
ใƒ‡ใƒผใ‚ฟๅฑฅๆญด็ฎก็†ใฎใŸใ‚ใฎใƒ†ใƒณใƒใƒฉใƒซใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใจReladomoใฎ็ดนไป‹ #jjug_ccc #ccc_g3 ใƒ‡ใƒผใ‚ฟๅฑฅๆญด็ฎก็†ใฎใŸใ‚ใฎใƒ†ใƒณใƒใƒฉใƒซใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใจReladomoใฎ็ดนไป‹ #jjug_ccc #ccc_g3
ใƒ‡ใƒผใ‚ฟๅฑฅๆญด็ฎก็†ใฎใŸใ‚ใฎใƒ†ใƒณใƒใƒฉใƒซใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใจReladomoใฎ็ดนไป‹ #jjug_ccc #ccc_g3
Hiroshi Ito
ย 
Java8็งป่กŒใฏๆ€–ใใชใ„๏ฝžใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บๆกˆไปถใงใฎJava8็งป่กŒไบ‹ไพ‹๏ฝž
Java8็งป่กŒใฏๆ€–ใใชใ„๏ฝžใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บๆกˆไปถใงใฎJava8็งป่กŒไบ‹ไพ‹๏ฝžJava8็งป่กŒใฏๆ€–ใใชใ„๏ฝžใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บๆกˆไปถใงใฎJava8็งป่กŒไบ‹ไพ‹๏ฝž
Java8็งป่กŒใฏๆ€–ใใชใ„๏ฝžใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บๆกˆไปถใงใฎJava8็งป่กŒไบ‹ไพ‹๏ฝž
Hiroyuki Ohnaka
ย 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project Jigsaw
Yuichi Sakuraba
ย 
ใ‚ฏใ‚™ใƒฉใƒ•ใƒ†ใ‚™ใƒผใ‚ฟใƒ˜ใ‚™ใƒผใ‚นๅ…ฅ้–€
ใ‚ฏใ‚™ใƒฉใƒ•ใƒ†ใ‚™ใƒผใ‚ฟใƒ˜ใ‚™ใƒผใ‚นๅ…ฅ้–€ใ‚ฏใ‚™ใƒฉใƒ•ใƒ†ใ‚™ใƒผใ‚ฟใƒ˜ใ‚™ใƒผใ‚นๅ…ฅ้–€
ใ‚ฏใ‚™ใƒฉใƒ•ใƒ†ใ‚™ใƒผใ‚ฟใƒ˜ใ‚™ใƒผใ‚นๅ…ฅ้–€
Masaya Dake
ย 
ๆ€ใฃใŸใปใฉๆ€–ใใชใ„๏ผ Haskell on JVM ่ถ…ๅ…ฅ้–€ #jjug_ccc #ccc_l8
ๆ€ใฃใŸใปใฉๆ€–ใใชใ„๏ผ Haskell on JVM ่ถ…ๅ…ฅ้–€ #jjug_ccc #ccc_l8ๆ€ใฃใŸใปใฉๆ€–ใใชใ„๏ผ Haskell on JVM ่ถ…ๅ…ฅ้–€ #jjug_ccc #ccc_l8
ๆ€ใฃใŸใปใฉๆ€–ใใชใ„๏ผ Haskell on JVM ่ถ…ๅ…ฅ้–€ #jjug_ccc #ccc_l8
y_taka_23
ย 
Java8 ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น and NetBeansใฎใƒกใƒขใƒชใƒญใ‚ฐใ‹ใ‚‰...
Java8 ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น and NetBeansใฎใƒกใƒขใƒชใƒญใ‚ฐใ‹ใ‚‰...Java8 ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น and NetBeansใฎใƒกใƒขใƒชใƒญใ‚ฐใ‹ใ‚‰...
Java8 ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น and NetBeansใฎใƒกใƒขใƒชใƒญใ‚ฐใ‹ใ‚‰...
ใชใŠใ ใใ—ใ 
ย 
ใƒคใƒ•ใƒผใฎๅบƒๅ‘Šใƒฌใƒใƒผใƒˆใ‚ทใ‚นใƒ†ใƒ ใ‚’Spring Cloud StreamๅŒ–ใ™ใ‚‹ใพใง #jjug_ccc #ccc_a4
ใƒคใƒ•ใƒผใฎๅบƒๅ‘Šใƒฌใƒใƒผใƒˆใ‚ทใ‚นใƒ†ใƒ ใ‚’Spring Cloud StreamๅŒ–ใ™ใ‚‹ใพใง #jjug_ccc #ccc_a4ใƒคใƒ•ใƒผใฎๅบƒๅ‘Šใƒฌใƒใƒผใƒˆใ‚ทใ‚นใƒ†ใƒ ใ‚’Spring Cloud StreamๅŒ–ใ™ใ‚‹ใพใง #jjug_ccc #ccc_a4
ใƒคใƒ•ใƒผใฎๅบƒๅ‘Šใƒฌใƒใƒผใƒˆใ‚ทใ‚นใƒ†ใƒ ใ‚’Spring Cloud StreamๅŒ–ใ™ใ‚‹ใพใง #jjug_ccc #ccc_a4
Yahoo!ใƒ‡ใƒ™ใƒญใƒƒใƒ‘ใƒผใƒใƒƒใƒˆใƒฏใƒผใ‚ฏ
ย 
Ad

Similar to Java libraries you can't afford to miss (20)

Google guava
Google guavaGoogle guava
Google guava
t fnico
ย 
Ast transformations
Ast transformationsAst transformations
Ast transformations
HamletDRC
ย 
JRuby and Invokedynamic - Japan JUG 2015
JRuby and Invokedynamic - Japan JUG 2015JRuby and Invokedynamic - Japan JUG 2015
JRuby and Invokedynamic - Japan JUG 2015
Charles Nutter
ย 
Annotation Processing - Demystifying Java's Dark Arts
Annotation Processing - Demystifying Java's Dark ArtsAnnotation Processing - Demystifying Java's Dark Arts
Annotation Processing - Demystifying Java's Dark Arts
James Kirkbride
ย 
Devoxx 15 equals hashcode
Devoxx 15 equals hashcodeDevoxx 15 equals hashcode
Devoxx 15 equals hashcode
bleporini
ย 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest Updates
Iftekhar Eather
ย 
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
James Titcumb
ย 
LinkedIn TBC JavaScript 100: Functions
 LinkedIn TBC JavaScript 100: Functions LinkedIn TBC JavaScript 100: Functions
LinkedIn TBC JavaScript 100: Functions
Adam Crabtree
ย 
Greach, GroovyFx Workshop
Greach, GroovyFx WorkshopGreach, GroovyFx Workshop
Greach, GroovyFx Workshop
Dierk Kรถnig
ย 
Spring Boot
Spring BootSpring Boot
Spring Boot
Jiayun Zhou
ย 
Java Libraries You Can't Afford To Miss
Java Libraries You Can't Afford To MissJava Libraries You Can't Afford To Miss
Java Libraries You Can't Afford To Miss
Andres Almiray
ย 
Revolution or Evolution in Page Object
Revolution or Evolution in Page ObjectRevolution or Evolution in Page Object
Revolution or Evolution in Page Object
Artem Sokovets
ย 
Groovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web ApplicationsGroovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web Applications
rohitnayak
ย 
Introduction to CDI and DI in Java EE 6
Introduction to CDI and DI in Java EE 6Introduction to CDI and DI in Java EE 6
Introduction to CDI and DI in Java EE 6
Ray Ploski
ย 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
Donald Sipe
ย 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
Michael Girouard
ย 
Ejb3 Dan Hinojosa
Ejb3 Dan HinojosaEjb3 Dan Hinojosa
Ejb3 Dan Hinojosa
Dan Hinojosa
ย 
OOP in PHP
OOP in PHPOOP in PHP
OOP in PHP
Tarek Mahmud Apu
ย 
JavaScript Literacy
JavaScript LiteracyJavaScript Literacy
JavaScript Literacy
David Jacobs
ย 
ๆฏ”XMLๆ›ดๅฅฝ็”จ็š„Java Annotation
ๆฏ”XMLๆ›ดๅฅฝ็”จ็š„Java Annotationๆฏ”XMLๆ›ดๅฅฝ็”จ็š„Java Annotation
ๆฏ”XMLๆ›ดๅฅฝ็”จ็š„Java Annotation
javatwo2011
ย 
Google guava
Google guavaGoogle guava
Google guava
t fnico
ย 
Ast transformations
Ast transformationsAst transformations
Ast transformations
HamletDRC
ย 
JRuby and Invokedynamic - Japan JUG 2015
JRuby and Invokedynamic - Japan JUG 2015JRuby and Invokedynamic - Japan JUG 2015
JRuby and Invokedynamic - Japan JUG 2015
Charles Nutter
ย 
Annotation Processing - Demystifying Java's Dark Arts
Annotation Processing - Demystifying Java's Dark ArtsAnnotation Processing - Demystifying Java's Dark Arts
Annotation Processing - Demystifying Java's Dark Arts
James Kirkbride
ย 
Devoxx 15 equals hashcode
Devoxx 15 equals hashcodeDevoxx 15 equals hashcode
Devoxx 15 equals hashcode
bleporini
ย 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest Updates
Iftekhar Eather
ย 
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
James Titcumb
ย 
LinkedIn TBC JavaScript 100: Functions
 LinkedIn TBC JavaScript 100: Functions LinkedIn TBC JavaScript 100: Functions
LinkedIn TBC JavaScript 100: Functions
Adam Crabtree
ย 
Greach, GroovyFx Workshop
Greach, GroovyFx WorkshopGreach, GroovyFx Workshop
Greach, GroovyFx Workshop
Dierk Kรถnig
ย 
Spring Boot
Spring BootSpring Boot
Spring Boot
Jiayun Zhou
ย 
Java Libraries You Can't Afford To Miss
Java Libraries You Can't Afford To MissJava Libraries You Can't Afford To Miss
Java Libraries You Can't Afford To Miss
Andres Almiray
ย 
Revolution or Evolution in Page Object
Revolution or Evolution in Page ObjectRevolution or Evolution in Page Object
Revolution or Evolution in Page Object
Artem Sokovets
ย 
Groovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web ApplicationsGroovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web Applications
rohitnayak
ย 
Introduction to CDI and DI in Java EE 6
Introduction to CDI and DI in Java EE 6Introduction to CDI and DI in Java EE 6
Introduction to CDI and DI in Java EE 6
Ray Ploski
ย 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
Donald Sipe
ย 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
Michael Girouard
ย 
Ejb3 Dan Hinojosa
Ejb3 Dan HinojosaEjb3 Dan Hinojosa
Ejb3 Dan Hinojosa
Dan Hinojosa
ย 
JavaScript Literacy
JavaScript LiteracyJavaScript Literacy
JavaScript Literacy
David Jacobs
ย 
ๆฏ”XMLๆ›ดๅฅฝ็”จ็š„Java Annotation
ๆฏ”XMLๆ›ดๅฅฝ็”จ็š„Java Annotationๆฏ”XMLๆ›ดๅฅฝ็”จ็š„Java Annotation
ๆฏ”XMLๆ›ดๅฅฝ็”จ็š„Java Annotation
javatwo2011
ย 
Ad

More from Andres Almiray (20)

Deploying to production with confidence ๐Ÿš€
Deploying to production with confidence ๐Ÿš€Deploying to production with confidence ๐Ÿš€
Deploying to production with confidence ๐Ÿš€
Andres Almiray
ย 
Going beyond ORMs with JSON Relational Duality Views
Going beyond ORMs with JSON Relational Duality ViewsGoing beyond ORMs with JSON Relational Duality Views
Going beyond ORMs with JSON Relational Duality Views
Andres Almiray
ย 
Setting up data driven tests with Java tools
Setting up data driven tests with Java toolsSetting up data driven tests with Java tools
Setting up data driven tests with Java tools
Andres Almiray
ย 
Creando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abiertoCreando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abierto
Andres Almiray
ย 
Liberando a produccion con confianza
Liberando a produccion con confianzaLiberando a produccion con confianza
Liberando a produccion con confianza
Andres Almiray
ย 
Liberando a produccion con confidencia
Liberando a produccion con confidenciaLiberando a produccion con confidencia
Liberando a produccion con confidencia
Andres Almiray
ย 
OracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java DevelopersOracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java Developers
Andres Almiray
ย 
Softcon.ph - Maven Puzzlers
Softcon.ph - Maven PuzzlersSoftcon.ph - Maven Puzzlers
Softcon.ph - Maven Puzzlers
Andres Almiray
ย 
Maven Puzzlers
Maven PuzzlersMaven Puzzlers
Maven Puzzlers
Andres Almiray
ย 
Oracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java DevelopersOracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java Developers
Andres Almiray
ย 
JReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of lightJReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of light
Andres Almiray
ย 
Building modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and LayrryBuilding modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and Layrry
Andres Almiray
ย 
Going Reactive with g rpc
Going Reactive with g rpcGoing Reactive with g rpc
Going Reactive with g rpc
Andres Almiray
ย 
Building modular applications with JPMS and Layrry
Building modular applications with JPMS and LayrryBuilding modular applications with JPMS and Layrry
Building modular applications with JPMS and Layrry
Andres Almiray
ย 
Taking Micronaut out for a spin
Taking Micronaut out for a spinTaking Micronaut out for a spin
Taking Micronaut out for a spin
Andres Almiray
ย 
Apache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouApache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and You
Andres Almiray
ย 
What I wish I knew about Maven years ago
What I wish I knew about Maven years agoWhat I wish I knew about Maven years ago
What I wish I knew about Maven years ago
Andres Almiray
ย 
What I wish I knew about maven years ago
What I wish I knew about maven years agoWhat I wish I knew about maven years ago
What I wish I knew about maven years ago
Andres Almiray
ย 
The impact of sci fi in tech
The impact of sci fi in techThe impact of sci fi in tech
The impact of sci fi in tech
Andres Almiray
ย 
Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019
Andres Almiray
ย 
Deploying to production with confidence ๐Ÿš€
Deploying to production with confidence ๐Ÿš€Deploying to production with confidence ๐Ÿš€
Deploying to production with confidence ๐Ÿš€
Andres Almiray
ย 
Going beyond ORMs with JSON Relational Duality Views
Going beyond ORMs with JSON Relational Duality ViewsGoing beyond ORMs with JSON Relational Duality Views
Going beyond ORMs with JSON Relational Duality Views
Andres Almiray
ย 
Setting up data driven tests with Java tools
Setting up data driven tests with Java toolsSetting up data driven tests with Java tools
Setting up data driven tests with Java tools
Andres Almiray
ย 
Creando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abiertoCreando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abierto
Andres Almiray
ย 
Liberando a produccion con confianza
Liberando a produccion con confianzaLiberando a produccion con confianza
Liberando a produccion con confianza
Andres Almiray
ย 
Liberando a produccion con confidencia
Liberando a produccion con confidenciaLiberando a produccion con confidencia
Liberando a produccion con confidencia
Andres Almiray
ย 
OracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java DevelopersOracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java Developers
Andres Almiray
ย 
Softcon.ph - Maven Puzzlers
Softcon.ph - Maven PuzzlersSoftcon.ph - Maven Puzzlers
Softcon.ph - Maven Puzzlers
Andres Almiray
ย 
Maven Puzzlers
Maven PuzzlersMaven Puzzlers
Maven Puzzlers
Andres Almiray
ย 
Oracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java DevelopersOracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java Developers
Andres Almiray
ย 
JReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of lightJReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of light
Andres Almiray
ย 
Building modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and LayrryBuilding modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and Layrry
Andres Almiray
ย 
Going Reactive with g rpc
Going Reactive with g rpcGoing Reactive with g rpc
Going Reactive with g rpc
Andres Almiray
ย 
Building modular applications with JPMS and Layrry
Building modular applications with JPMS and LayrryBuilding modular applications with JPMS and Layrry
Building modular applications with JPMS and Layrry
Andres Almiray
ย 
Taking Micronaut out for a spin
Taking Micronaut out for a spinTaking Micronaut out for a spin
Taking Micronaut out for a spin
Andres Almiray
ย 
Apache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouApache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and You
Andres Almiray
ย 
What I wish I knew about Maven years ago
What I wish I knew about Maven years agoWhat I wish I knew about Maven years ago
What I wish I knew about Maven years ago
Andres Almiray
ย 
What I wish I knew about maven years ago
What I wish I knew about maven years agoWhat I wish I knew about maven years ago
What I wish I knew about maven years ago
Andres Almiray
ย 
The impact of sci fi in tech
The impact of sci fi in techThe impact of sci fi in tech
The impact of sci fi in tech
Andres Almiray
ย 
Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019
Andres Almiray
ย 

Recently uploaded (20)

Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
ย 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
ย 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
ย 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
ย 
HCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
HCL Nomad Web โ€“ Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
HCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
panagenda
ย 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
ย 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
ย 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
ย 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
ย 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
ย 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
ย 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
ย 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
ย 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
ย 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
ย 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
ย 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
ย 
AI Changes Everything โ€“ Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything โ€“ Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything โ€“ Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything โ€“ Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
ย 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
ย 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
ย 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
ย 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
ย 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
ย 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
ย 
HCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
HCL Nomad Web โ€“ Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
HCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
panagenda
ย 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
ย 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
ย 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
ย 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
ย 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
ย 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
ย 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
ย 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
ย 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
ย 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
ย 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
ย 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
ย 
AI Changes Everything โ€“ Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything โ€“ Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything โ€“ Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything โ€“ Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
ย 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
ย 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
ย 

Java libraries you can't afford to miss

  • 1. @aalmiray #DevoxxPL JAVA LIBRARIES YOU CANโ€™T AFFORD TO MISS ANDRES ALMIRAY @AALMIRAY
  • 4. @aalmiray #DevoxxPL Guice - https://github.com/google/guice Injector injector = Guice.createInjector(new AbstractModule() { @Override protected void configure() { bind(Engine.class).annotatedWith(named("efficient")) .to(FusionPoweredEngine.class) bind(Engine.class).annotatedWith(named("poor")) .to(CoalPoweredEngine.class) } }); Key key = Key.of(Engine.class, named("poor")); Engine engine = injector.getInstance(key); // do something with engine ย 
  • 5. @aalmiray #DevoxxPL Spring - http://projects.spring.io/spring-framework/ โ€ขโ€ฏ More than just dependency injection โ€ขโ€ฏ Assertions โ€ขโ€ฏ MessageSource + MessageFormat โ€ขโ€ฏ Serialization โ€ขโ€ฏ JDBC, JPA โ€ขโ€ฏ JMX โ€ขโ€ฏ Validation โ€ขโ€ฏ Scheduling โ€ขโ€ฏ Testing
  • 7. @aalmiray #DevoxxPL SLF4J - http://www.slf4j.org/ โ€ขโ€ฏ Wraps all other logging frameworks: โ€ขโ€ฏ java.util.logging โ€ขโ€ฏ Apache commons logging โ€ขโ€ฏ Log4j โ€ขโ€ฏ Provides varargs methods
  • 8. @aalmiray #DevoxxPL Guava - https://github.com/google/guava โ€ขโ€ฏ New Collections: โ€ขโ€ฏ MultiSet โ€ขโ€ฏ BiMap โ€ขโ€ฏ MultiMap โ€ขโ€ฏ Table โ€ขโ€ฏ Utility classes for Collections โ€ขโ€ฏ Utility classes for String โ€ขโ€ฏ Caches โ€ขโ€ฏ Reflection โ€ขโ€ฏ I/O โ€ขโ€ฏ Functional programming support (JDK6+)
  • 9. @aalmiray #DevoxxPL OkHttp - http://square.github.io/okhttp/ public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); OkHttpClient client = new OkHttpClient(); String post(String url, String json) throws IOException { RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = client.newCall(request).execute(); return response.body().string(); }
  • 10. @aalmiray #DevoxxPL RxJava - http://reactivex.io/ Observable<Repository> observable = github.repositories(model.getOrganization()); if (model.getLimit() > 0) { observable = observable.take(model.getLimit()); } Subscription subscription = observable .timeout(10, TimeUnit.SECONDS) .doOnSubscribe(() -> model.setState(RUNNING)) .doOnTerminate(() -> model.setState(READY)) .subscribeOn(Schedulers.io()) .subscribe( model.getRepositories()::add, Throwable::printStackTrace); model.setSubscription(subscription);
  • 11. @aalmiray #DevoxxPL Retrofit - http://square.github.io/retrofit/ public interface GithubAPI { @GET("/orgs/{name}/repos") Call<List<Repository>> repositories(@Path("name") String name); @GET Call<List<Repository>>> repositoriesPaginate(@Url String url); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com") .addConverterFactory(JacksonConverterFactory.create(objectMapper)) .build(); return retrofit.create(GithubAPI.class);
  • 12. @aalmiray #DevoxxPL Retrofit + RxJava public interface GithubAPI { @GET("/orgs/{name}/repos") Observable<Response<List<Repository>>> repositories(@Path("name") String name); @GET Observable<Response<List<Repository>>> repositoriesPaginate(@Url String url); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com") .addConverterFactory(JacksonConverterFactory.create(objectMapper)) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); return retrofit.create(GithubAPI.class);
  • 13. @aalmiray #DevoxxPL JDeferred - http://jdeferred.org/ model.setState(RUNNING); int limit = model.getLimit(); limit = limit > 0 ? limit : Integer.MAX_VALUE; Promise<Collection<Repository>, Throwable, Repository> promise = github.repositories(model.getOrganization(), limit); promise.progress(model.getRepositories()::add) .fail(Throwable::printStackTrace) .always((state, resolved, rejected) -> model.setState(READY));
  • 14. @aalmiray #DevoxxPL MBassador - https://github.com/bennidi/mbassador public class EventHandler { private static final Logger LOG = LoggerFactory.getLogger(EventHandler.class); @Inject private net.engio.mbassy.bus.MBassador<ApplicationEvent> eventBus; @net.engio.mbassy.listener.Handler public void handleNewInstance(NewInstanceEvent event) { LOG.trace("New instance created {}", event.getInstance()); } public void createInstance() { eventBus.publish(new NewInstanceEvent(Person.builder() .name("Andres") .lastname("Almiray") .build())); } }
  • 16. @aalmiray #DevoxxPL Lombok - https://projectlombok.org/ import javax.annotation.Nonnull; @lombok.Data public class Person { private final String name; private final String lastname; @Nonnull @lombok.Builder public static Person create(@Nonnull String name, @Nonnull String lastname) { return new Person(name, lastname); } } @lombok.Data @lombok.EqualsAndHashCode(callSuper = true) @lombok.ToString(callSuper = true) public class NewInstanceEvent extends ApplicationEvent { @javax.annotation.Nonnull private final Object instance; }
  • 17. @aalmiray #DevoxxPL ByteBuddy - http://bytebuddy.net public class Foo { public String bar() { return null; } public String foo() { return null; } public String foo(Object o) { return null; } } Foo dynamicFoo = new ByteBuddy() .subclass(Foo.class) .method(isDeclaredBy(Foo.class)).intercept(FixedValue.value("One!")) .method(named("foo")).intercept(FixedValue.value("Two!")) .method(named("foo").and(takesArguments(1))) .intercept(FixedValue.value("Three!")) .make() .load(getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER) .getLoaded() .newInstance();
  • 19. @aalmiray #DevoxxPL JUnitParams - https://github.com/Pragmatists/JUnitParams @RunWith(JUnitParamsRunner.class) @TestFor(SampleService.class) public class SampleServiceTest { private SampleService service; @Rule public final GriffonUnitRule griffon = new GriffonUnitRule(); @Test @Parameters({",Howdy stranger!", "Test, Hello Test"}) public void sayHello(String input, String output) { assertThat(service.sayHello(input), equalTo(output)); } } ย 
  • 20. @aalmiray #DevoxxPL Mockito - http://mockito.org/ @Test @Parameters({",Howdy stranger!", "Test, Hello Test"}) public void sayHelloAction(String input, String output) { // given: SampleController controller = new SampleController(); controller.setModel(new SampleModel()); controller.setService(mock(SampleService.class)); // expectations when(controller.getService().sayHello(input)).thenReturn(output); // when: controller.getModel().setInput(input); controller.sayHello(); // then: assertThat(controller.getModel().getOutput(), equalTo(output)); verify(controller.getService(), only()).sayHello(input); } ย 
  • 21. @aalmiray #DevoxxPL Jukito - https://github.com/ArcBees/Jukito @RunWith(JukitoRunner.class) public class SampleControllerJukitoTest { @Inject private SampleController controller; @Before public void setupMocks(SampleService sampleService) { when(sampleService.sayHello("Test")).thenReturn("Hello Test"); } @Test public void sayHelloAction() { controller.setModel(new SampleModel()); controller.getModel().setInput("Test"); controller.sayHello(); assertThat(controller.getModel().getOutput(), equalTo("Hello Test")); verify(controller.getService(), only()).sayHello("Test"); } } ย 
  • 22. @aalmiray #DevoxxPL Spock- http://spockframework.org/ @spock.lang.Unroll class SampleControllerSpec extends spock.lang.Specification { def "Invoke say hello with #input results in #output"() { given: SampleController controller = new SampleController() controller.model = new SampleModel() controller.service = Mock(SampleService) { sayHello(input) >> output } when: controller.model.input = input controller.sayHello() then: controller.model.output == output where: input << ['', 'Test'] output << ['Howdy, stranger!', 'Hello Test'] } } ย 
  • 23. @aalmiray #DevoxxPL Awaitility - https://github.com/awaitility/awaitility @Test @Parameters({",Howdy stranger!โ€, "Test, Hello Test"}) public void sayHelloAction(String input, String output) { // given: SampleModel model = mvcGroupManager.findModel("sample", SampleModel.class); SampleController controller = mvcGroupManager.findController("sample", SampleController.class); // expect: assertThat(model.getOutput(), nullValue()); // when: model.setInput(input); controller.invokeAction("sayHello"); // then: await().until(() -> model.getOutput(), notNullValue()); assertThat(model.getOutput(), equalTo(output)); } ย 
  • 24. @aalmiray #DevoxxPL Rest-assured - https://github.com/rest-assured/rest-assured get("/lotto").then().assertThat().body("lotto.lottoId", ย equalTo(5)); ย  ย  given(). ย  ย  ย  ย  ย param("key1", ย "value1"). ย  ย  ย  ย  ย param("key2", ย "value2"). ย  when(). ย  ย  ย  ย  ย post("/somewhere"). ย  then(). ย  ย  ย  ย  ย body(containsString("OK")); ย  ย  ย  * Includes JsonPath and XmlPath support
  • 26. @aalmiray #DevoxxPL Okio - https://github.com/square/okio HikariCP - https://github.com/brettwooldridge/HikariCP gRPC - http://www.grpc.io/ Kryo - https://github.com/EsotericSoftware/kryo MockServer - http://www.mock-server.com/