How to get your kids started with Java
programming?
Arun Gupta
Scratch http://scratch.mit.edu/projects/23705523/
ALICE http://www.alice.org
GreenFood
BludeJ http://www.bluej.org/
Lego Mindstorms
Mutation Analysis judges the judges
1. Run the tests
2. Change the sources
3. Run the tests again
If a change is not making any test fail, the line is not covered
Some Mutation samples
● Negated conditional
● Mutated return of Object value
● Removed Assignment to member variable
● Conditionals boundary: < changes to <=
● Math: change operators (e.g. + to -)
● Remove void method call
● …
There are few java libraries...
● Javalanche
● Jumble
● Jester
Some are abandoned, outdated, slow or do not support framework...
Then there's pitest aka PIT
● Actively developed
● Acceptable performance
● Open Source
● Supports Java 8, Gradle, JUnit, *Mock* etc.
Everything You Were TaughtAbout Java Is Wrong
Tim Boudreau
Java bean is designed for UI
Application Servers are a Historical Relic
Threads for I/O? Really?
java.util.not-so-concurrent
NoSQLfor Big Data?
Lukas Eder
Get Back in Control of Your SQL
●
You’re giving up on ACID
●
You’re giving up on type safety
●
You’re giving up on standards
●
You’re giving up on tooling
●
You’re giving up on relational algebra
●
You haven’t asked operations
●
You don’t actually have «Big Data»
Advices
● Write readable code
● Test Interfaces, not internals
● Test protocols, not Interfaces
● From simple to general (do not overgeneralize from the start)
● Test at the right level
Nikita Salnikov-Tarnovski
I bet you have a memory leak
●
The most common leak in web applications
●
After application undeploy classes are not longer
needed
●
If even 1 class is left behind, he keeps all his friends
●
After some redeploys, you crash
Classloader
leak
https://www.youtube.com/watch?v=iHTg5QQg2NE
Exceptions are the solution to a problem we
shouldn’t have - distance between detection and
resolution
Remarks
Tell, don’t ask principle
Replace Type code with subclasses
Noticeable Error Handling is a Symptom of Bad Design
Consider ALL the cases to make design better
Reaction to an Error
● Fail fast
● Carry On - record
● Ignore - record