Need advice about which tool to choose?Ask the StackShare community!
Play vs Yii: What are the differences?
What is Play? The High Velocity Web Framework For Java and Scala. Play Framework makes it easy to build web applications with Java & Scala. Play is based on a lightweight, stateless, web-friendly architecture. Built on Akka, Play provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications.
What is Yii? A high-performance PHP framework best for developing Web 2.0 applications. Yii comes with: MVC, DAO/ActiveRecord, I18N/L10N, caching, authentication and role-based access control, scaffolding, testing, etc. It can reduce your development time significantly.
Play and Yii can be primarily classified as "Frameworks (Full Stack)" tools.
"Scala" is the top reason why over 73 developers like Play, while over 36 developers mention "Open source" as the leading cause for choosing Yii.
Play and Yii are both open source tools. It seems that Play with 11.2K GitHub stars and 3.77K forks on GitHub has more adoption than Yii with 4.86K GitHub stars and 2.22K GitHub forks.
Coursera, Zalando, and Keen are some of the popular companies that use Play, whereas Yii is used by 180vita, Lulo, and Utrip. Play has a broader approval, being mentioned in 112 company stacks & 47 developers stacks; compared to Yii, which is listed in 58 company stacks and 32 developer stacks.
In the past few months, a project we're working on grew up quite fast. Since we're adding more and more features, I'm considering migrating my Express/TS REST API towards a more solid and more "enterprise-like" framework. Since I am experienced with TypeScript but not so much with Rails nor Play (Scala), I'd like to have some advice on which one could provide the best development experience, and most importantly, the smoothest paradigm transition from the JS/TS world. I've worked on some personal project with Rails, but I've found the Ruby language really distant from what the TypeScript ecosystem and syntax are, whereas on the opposite - during the brief tours I've taken in the past weeks - it's been a pleasure coding in Scala. Obviously, there are some key differences between the two languages - and the two frameworks consequently - but despite all the ROR automation and ease of use I don't despise at all Scala's pragmatic and great features such as static typing, pattern matching, and type inference. So... Please help me out with the choice! Regards
I don't have the Scala experience to compare the two, but I can say that Ruby is a wonderful language. For procedural programming where you don't need a lot of concurrent execution threads, it's superior to Node.JS in my opinion. All of the concepts from Typescript have equivalent syntax in Ruby, but there are fewer symbols (e.g. () => { ... }); ) and more keywords (eg 'do ... end'). It's a very flexible language and allows for a lot of different approaches to how it's written, so coding standards and careful organization is important. In the long run, however, you'll find it quicker to debug than Node.JS and just as powerful.
If you are comfortable with TypeScript, why not evolve to a C# ecosystem? Asp.Net Core + Entity Framework is a mature and well supported technology. As far as I can see in the enterprise market, the most adopted choice is still Java. So, maybe you may have a look to SpringBoot - and ultimately Quarkus.
This is advice regardless of your background and requirements. The Play framework has a terrible and complicated design, don't risk it. I even suggest Spring and Kotlin over it! You can use Scala for small services and Data Engineering stuff and benefit optimizations and threading of JVM. RoR, on the other hand, has a huge development speed, which I believe is a big advantage cause you can handle performance bottlenecks later. Also, Scala has another downside, which is featureful in terms of OO and FP paradigms, which makes anyone write code freely with any personal style and makes it a problem in a team, Hence a coding style has to be defined if there would be Scala development team.
If software performance is your top priority, then Scala/Play is probably best. If developer productivity is your top priority, then Ruby on Rails is the best choice in my opinion.
The Rails framework is batteries-included. The framework takes care of many things by default so that you don't have to. Logging, security, etc. It's also well-integrated; for example, controllers understand models out of the box. I had a better experience with RoR than with Play.
On the other hand, Scala and the JVM are more performant in general, so they can scale to serve more requests per second on the same hardware.
If you're considering serverless functions, then Scala is probably a better choice because it would be faster to load, giving you better economics.
This website was originally written in Yii as PHP was my main language back then. After learning Django, I realized just how quickly you could build a web app with less lines. So I migrated my website to Django in a week or two and managed to cut down the lines of code by half. Some of the lines saving came from the models, the views, and the expressiveness of Python. Django requires like config for the models and they provide many generic views that abstracts away common patterns.
Pros of Play
- Scala81
- Web-friendly architecture55
- Built on akka55
- Stateless50
- High-scalable47
- Fast46
- Open source40
- Java34
- High velocity27
- Fun24
- Lightweight9
- Non-blocking io8
- Developer friendly6
- Simple template engine5
- Scalability4
- Pure love3
- Resource efficient2
Pros of Yii
- Open source42
- Code generator33
- Simple33
- Active record29
- Full featured26
- Documentation21
- High performance21
- Rapid development20
- Flexible16
- Mvc11
- Not bloated10
- Stable Release8
- Community8
- Amazing8
- View Helpers7
- Modular architecture6
- Long Term Support6
- Easy setup, easy develop5
- Easy1
Sign up to add or upvote prosMake informed product decisions
Cons of Play
- Evolves fast, keep up with releases3
- Unnecessarily complicated1
Cons of Yii
- Unnatural love of arrays2
- Promotes spagetti code1
- Too Opinionated1
- Promotes bad practice1