• Make the code Complex
• It end up given developer opportunities to
couple things that should not be tight.
• You don`t need it todo Functional Programing.
Compilation Time / Build Time
• Very Slow
• If you don’t use modules SBT become a issue
• SBT still don`t have good integration with IDEs
• You need avoid features because of number of
classes scala created(It might get fixed with
java 8 because of lambdas).
Operator Overloading /
Dynamic @Interface (BAD)
• It`s a cool idea
• But everybody is using it now, become a mess
• You endup like: MAGIC words in Ruby
• Scala is not Ruby, its compiled, this is so wrong.
• Scala roots are on JVM and Haskell it don’t
make sense to my this dynamic lang stuff.
Parser Combinators /
Macros (Very Bad)
• Hard to Understand / Bad Documentation
• The Code is very Ugly
• You don’t need it, there is betters ways
• There is no reason to do parsers by hand, use
framework like Jackson/XStrean.
• Macros? No Need as well. Overuse of compiler.
• Faster Than Java
• Optimized for the JVM
• Runtime very solid (thanks to Java)
• All Java eco-system ready to use
• Best language for the JVM now a days.
• Actors Model
• Future/Promises – Async Callbacks
• Use all great things in java: NoSQL DBs, Search
Engines, Rules Engines, Middleware Servers,
• You need avoid some features
• Scala is awesome for architecture
• Great for development but it need strong code
review practices and code policies.
• Once they fix the build times and Backward
Compatibility issues will be perfect