Need advice about which tool to choose?Ask the StackShare community!
AdonisJS vs Laravel: What are the differences?
Introduction
In this Markdown document, we will discuss the key differences between AdonisJS and Laravel, two popular web application frameworks. The purpose of this comparison is to highlight the distinguishing features of each framework and help developers make an informed choice based on their specific requirements.
Architecture: AdonisJS follows the MVC (Model-View-Controller) architecture, whereas Laravel follows the similar MVC pattern but also offers additional support for the HMVC (Hierarchical Model-View-Controller) pattern. This makes Laravel more suitable for large-scale, complex applications with a nested organizational structure.
Language: AdonisJS is primarily based on the JavaScript language, specifically Node.js, which makes it suitable for full-stack JavaScript development. On the other hand, Laravel is based on PHP, a widely adopted server-side scripting language with a large community and extensive ecosystem.
ORM and Database Support: AdonisJS comes with its own ORM called Lucid, which offers a fluent query builder and supports multiple databases, including PostgreSQL, MySQL, and SQLite. Laravel, however, utilizes Eloquent ORM, which provides a powerful and expressive database abstraction layer, supporting various databases such as MySQL, PostgreSQL, SQLite, and SQL Server. Laravel also has robust support for NoSQL databases like MongoDB.
Runtime Environment: AdonisJS is built on top of Node.js, which enables it to leverage JavaScript's event-driven, non-blocking I/O model, making it highly performant and suitable for real-time applications. In contrast, Laravel runs on traditional PHP servers and follows a blocking I/O model, making it well-suited for traditional web applications and RESTful APIs.
Community and Ecosystem: Laravel has a larger and more established community compared to AdonisJS. This translates to a richer ecosystem of packages, libraries, and resources for Laravel users. However, the AdonisJS community is growing rapidly, offering its own set of packages and resources. Developers choosing between the two frameworks should consider the size and activity of the community as it impacts the availability of support and resources.
Learning Curve: AdonisJS, being built on a JavaScript stack, may have a steeper learning curve for developers who are unfamiliar with JavaScript and its concepts. Laravel, being based on PHP, is generally considered to have a shallower learning curve, especially for developers with prior PHP experience. However, both frameworks have detailed documentation and active communities that can help developers learn and master them.
In summary, AdonisJS and Laravel differ in architecture, language, ORM and database support, runtime environment, community and ecosystem, and learning curve. Developers should consider these differences when choosing the framework that best suits their project requirements.
Hello, I am a fullstack web developer. I have been working for a company with Java/ Spring Boot and client-side JavaScript(mainly jQuery, some AngularJS) for the past 4 years. As I wish to now work as a freelancer, I am faced with a dilemma: which stack to choose given my current knowledge and the state of the market?
I've heard PHP is very popular in the freelance world. I don't know PHP. However, I'm sure it wouldn't be difficult to learn since it has many similarities with Java (OOP). It seems to me that Laravel has similarities with Spring Boot (it's MVC and OOP). Also, people say Laravel works well with Vue.js, which is my favorite JS framework.
On the other hand, I already know the Javascript language, and I like Vue.js, so I figure I could go the fullstack Javascript route with ExpressJS. However, I am not sure if these techs are ripe for freelancing (with regards to RAD, stability, reliability, security, costs, etc.) Is it true that Express is almost always used with MongoDB? Because my experience is mostly with SQL databases.
The projects I would like to work on are custom web applications/websites for small businesses. I have developed custom ERPs before and found that Java was a good fit, except for it taking a long time to develop. I cannot make a choice, and I am constantly switching between trying PHP and Node.js/Express. Any real-world advice would be welcome! I would love to find a stack that I enjoy while doing meaningful freelance coding.
Hi Eva, As you have solid experience with Spring already, you should jump into freelancing with that. It would be quite stressful to start freelancing with a tech stack you don't know well. Then in the background you can keep learning/practicing an alternative and switch over when you are confident enough (eg. 0.5-1 year later). I think you should learn Laravel as you already like it and find it easier. Express has better performance but that is not required for most of the small freelancer projects.
Looking at current technological trends and rise of JavaScript, you cannot go wrong with JavaScript. - There's an abundance of libraries to get most things done - You can use JavaScript for both the frontend and the backend - this allows you potentially share your logic/models/code across both stacks - A dynamic/interpreted language such as JavaScript is great for serverless (there's somewhat of a trend towards serverless aswell - especially in modern projects) - If you like/need static typing, you can always migrate seemlessly to Typescript - VueJS is a lightweight framework (compared to Angular), it has more GitHub stars and most would argue it's easier to work with (beginner friendly). Additionally most modern webapps do not use JQuery anymore (even though a lot of legacy projects continue to do so). You don't need JQuery if you use Vue/Angular/React
Additionally it doesn't seem like performance is a hugely important metric in your scenario, so JavaScript would suffice.
Note: These are all my opinions and what I've seen in the current market when recently searching for jobs.
I think Patrik and Alex are right: if you're comfortable with Spring Boot already, you'll be more productive right from the start.
If you wish to learn something else besides, both Laravel and Express are good choices. They aren't in the same category of frameworks: Laravel is an all-in-one solution, while Express is more like "build your own stack from different parts". Which implies that you can use whatever you want as a database engine: MySQL or PostgreSQL are perfectly valid choices (in my school, we teach Express with MySQL, because SQL is still a big thing here in France, and a sought-after skill). You can use Sequelize or TypeORM which support all major SQL DBMS.
Express is widely used, but if you're seeking the JavaScript equivalent of Spring Boot or Laravel, you probably want to look at NestJS. The only potential downside is that it's still young, maintained by a small commmunity, compared to those behind Spring Boot and Laravel.
Bottom line: using a stack tech, that you enjoy and are comfortable with, matters. Spring Boot + Vue.js seem perfectly fine to me. But do forget jQuery if you're using Vue.js, React or Angular, because it will definitely bring more harm than good!
Hi as someone who employs and select developers i agree with a lot almost sayed but think of what are your strengths and where you are or better where your customers are. If you search for big enterprise projects spring boot is ok sql is must and html css as well. if you want to go more to internet related companies (like airbnb, what sup, facebook ) or similar (and not asia) then react is a must node js as well. The libraries tools etc which are used you need to adopt fast. If asia then VUE is a must. but if you like small projects with individuals or like wordpress or similar then you can learn php but i think in 2020 it is wasted time. Same for python in that area. and i also see that we often have problem that developer at least must understand docker docker compose better as it works with kubernetes ,.. just my 5 cents
I would definitely recommend you to go with Spring Boot + AngularJS + jQuery. Reasons: 1- You have an experience of 4 years with the above-mentioned stack. 2- As you mentioned that you wish to work as a freelancer, your stack is the perfect one for finding good bids with a little less effort than that of PHP + Laravel + Vue.js.
in order to stay employable, I'd work with something you can deliver with. if I'd be your client and you'd have to get comfortable with a new stack, I would 100% not pay you for this startup time. learn new stuff in your free-time. or set aside time for learning.
that said, if you want to reorientate, php (even though i personally hate it) is extremely wide spread. but so are java and nodejs. so I'm not a fan of that argument... i recommend building something in each language, and see what you enjoy more. for me it was nodejs, because I already enjoy frontend JavaScript, and appreciate the ecosystem and community.
regarding expressjs and mongodb: yes, it is a goto solution for a lot of tutorials, because its as simple as it gets. especially wben using something like monk. BUT if you want to use mysql, posgres or similar, check out TypeORM, Prism or another ORM-like solution. you can use any db with express, and there's plenty of abstraction layers, which make your life easier. but i noticed that expressjs does a lot less "holding hands" compared to .net core (c#), or laravel (php). can be a pro or a con.
As a developer myself, I would recommend you not to restrict yourself to JAVA, PHP or any other language. New Tools/languages keep coming every day. If you do plan to move to freelancing. PHP has a lot of options in the freelance space and a lot of competition too.
Learning PHP is as simple as learning any other language. It depends merely on your interest.
Personally if you can code, you should not restrict yourself. I have had to code in many languages, PHP, Perl, shell script, Python, Java, Javascript, Ruby etc... I would keep your developing skills and logic, algorithms etc.. and increase your knowledge and experience in the different languages.
I agree with you JAVA is a lot more time consuming. But it also has its enterprise level scope.
At the same time learning a new language should not be a barrier for you to stop exploring what's out there and keeping your skills up to date. Learning new technologies should be your primary focus and getting project out of your stack helps you build a good reputation.
There are many options for you to pursue. Having an open mindset will help you move forward. If you look to learn now, you are setting yourself up for a brighter future.
I like fullstack freelancers who stacks are clean as one of below
PHP (laravel ) + Jquery + Bootstrap
Python(Django) + Angular JS or VueJS
NODEJS + REACTJS
Hey There, I would recommend going fullstack javascript since you already have experience with javascript on the front end it would be very easy to pickup node and express js. You can use sql with node and express if you please, but mongo is pretty easy to get going with.
Please, try to work with your comfortable stack, here is some recommendation
Hello... I hope everyone is ok amid today's global situation.
I'm trying to choose the perfect stack for a new mobile app project that resembles the super apps like GoJek & Grab.
I have gone to BUILTWITH and seen what their stack on all fronts.....however, and even though, they both differ from one another, I'm still looking for the perfect stack that will give us PERFORMANCE & SCALABILITY for years to come.
Your comments & suggestions are very important to us, so please share your thoughts.
We recommend Laravel over Ruby on Rails (Ruby) and Express.js (JavaScript/Node.js). We chose Laravel ourselves for our own internal software project, recently after comparing these same 3 software frameworks. In selecting Laravel, we chose to build our app using the software language PHP. PHP has the largest market share of all the web-based software languages (close to 80% of all websites use PHP). Also, Laravel is the fastest-growing software framework based on PHP making it a wise choice.
We also plan to integrate WordPress and WooCommerce later with our Laravel web-app. WordPress and WooCommerce like Laravel are all built using PHP. WordPress is the most popular Content Management System in the world. This will allow us to build out the front-end marketing website in WordPress. Also, we plan to offer subscriptions and sell products. For this, we will use WooCommerce. WooCommerce is the most used e-commerce platform in the world. We’ll be able to use our same Laravel developers to extend our app to WordPress and WooCommerce. By standardizing on PHP, we’ll be able to use the same software developers on all 3 platforms. PHP’s large market share will be an asset to us as we start recruiting talented software developers.
Lastly, we are gaining access to a fast-growing and awesome community that supports Laravel. Before we made our decision, I personally met Laravel’s founder Taylor Otwell along with several of his team members. After meeting with the Laravel team at Laracon US in New York City and learning more about the direction they are going with the framework, we’re confident we made the right decision.
To read the longer version of this answer where we go into more detail behind our recommendation, visit https://rackless.com/laravel-rails-expressjs
Before I recommend a tool, I think it is important to look at your requirements and capabilities - as you have looked at 3 very different tools: different programming languages, different implementation strategies and different target audience. It sounds like you don't already have a set of dedicated developers, so it is likely that your choice should be mainly driven by how easy it is to get developers that are familiar with the tools - so I'm going to list some considerations that I think you should review, starting with what I believe would be the most important for your bootstrap process:
Mindshare: how easy it is to get developers that are familiar with the technology and can immediately start working on your project. This is definitely where Node.js shines - Javascript is one of the fastest growing languages and Node.js played a huge part in this. I would bet that wherever you are located, Javascript developers would be the easiest to come by.
Fit for purpose: from your description we can understand that you are looking at a backend technology to implement some sort of REST API for a mobile app. The 3 different options you offered each fit on a different place on such a stack: Ruby is a programming language and not even a service framework - if you choose it, you then have to choose a server implementation and REST framework (and there are a lot, mostly as Ruby has a standard API for connecting a web server and application frameworks, and so this space has blown up) it used to be that Rails was the most popular, so you may choose that, but the interest in it has waned a bit in recent years; Node.js is a server framework, but it also has a dominant application framework called Express, that is geared well to your usage, so you'd likely work with that; Laravel is an application framework - it uses the PHP programming language, whose use has declined a bit in recent years, and was originally built for MVC type applications - though it has workflows for REST APIs and would probably work well for you as well.
Scalability: while this is probably the least significant issue at the moment (when it gets to a point where the backend service is your bottleneck, you'd likely have enough resources for a rewrite), and also the most dependent on factors that you didn't specify and are hard to estimate (such as: session complexity; amounts of data; sensitivity to locality; sensitivity to latency), it is still worthy to address it. Unfortunately, I don't have any good news: Ruby is notoriously bad at getting the best performance (the current BKM for milking performance from a Ruby codebase is to run the app on the Java virtual machine); Node.js has severe memory limitations that will make it very hard to scale if your backend needs to do a lot of work (I have a very personal and troubling experience with this issue); and PHP has as many scalability optimization strategies as there are PHP developers (this is not a good thing).
My suggestion to you as to how to proceed can be summarized to this prioritized list of options: 1. Get a good head developer with a lot of experience and let them choose the best tool - they'd likely go with what they know, which is likely to be a good choice - and if not, when scalability will become an issue, you could rewrite. 2. Choose something (likely Node.js) and don't worry about scalability - see (1) above. 3. Use Vert.x: it is a highly scalable application and service framework that offers great performance as well as a lot of tools to solve data scalability, locality and latency, and it works with multiple programming languages, such as Javascript and Ruby.
Node.js would be the best choice among all, you can compare all 3 of them on Stackshare and you will find that Node.js is on the top on almost every aspect, and since your focus is primarily on Performance and Scalability you won't regret after choosing Node.js. Also, the JavaScript open-source community has made a lot of effort and created numerous packages that will give you the speed and smooth execution of your project you need. Though your question was regarding backend, but if you choose JavaScript(Node.js) at your backend, then you can have a cross-functional team that can work on both, frontend as well as backend because JavaScript is everywhere, React Native for Android and iOS apps, React.js for single page web apps and Node.js ofcourse for your backend. And I don't have to tell you how much easier it would be to code and manage in a single language to build your complete system end-to-end. I hope it helps.
That's a really ambitious project. So you're going to want to move as quickly as possible. That means choosing a software stack that will allow you to move the most quickly. Of the ones you've listed, Ruby (Ruby on Rails, more precisely) will give you that. There are probably other options that would allow you to move even more quickly than Rails, but developers for those more advanced stacks are much more expensive, and hard to find.
Rails can and does scale to millions of users. It's not necessarily easy, but if you're running a successful app, you'll be able to afford people to help you scale out when you reach that point. But if you choose a slower framework (or have bad developers) you won't even reach the point of needing scalability.
Hi Team
I want your suggestions in order for me to decide which stack is suitable for the below-mentioned requirement.
Currently, I am considering building it in Wordpress (Starting with prebuilt plugins and develop on it)
But I am skeptical, so I am considering Laravel.
And recently I found one very good solution built in Angular, Node and MySQLHere are the high-level goals I am trying to achieve:
The system has 3 modules
- Multi-Vendor e-commerce Market Place
- Peer to peer Selling of used items
- Listing/ Directory kind of portal for the service industry
I would lean between Drupal and Laravel. Peer to peer selling shouldn't be too hard to set up using Drupal Commerce based modules (search for Marketplace). But if you don't find most of your requirements being met, you might want to go with Laravel. I know there are modules for Drupal that would help you achieve most of your requirements, so I would suggest doing some research there first.
It has the necessary packages for what you need, in addition to optimizing your time with what is needed.
Depends where you find more confortable, ever tech work good. the most important is the what do you are looking in you scalable project
Hi, We are thinking to rebuild a website and need your suggestion on which platform to choose from NodeJs, Laravel & CodeIgnitor. Since it's an education base website and there will be multiple functionalities like the use of graphics, video, animation and off-course forms for lead generation. Please advise us which tool to use to build the website considering load-time, server security, code vulnerability, etc.
It has the necessary packages for what you need, in addition to optimizing your time with what is needed.
Node.js is great but if I had a choice for something like this I would pick Elixir and Phoenix. They have LiveViews and channels which be one step up then the other 3 plateforms. It will also scale better and respond faster. Last will probably far less code as well.
Node.js is the perfect tech to real-time features like chats, forums, quizzes and polls. Additionally it has great support for objects storage like Mongodb and its important for file media management.
I would suggest you to pick the right stack for the right purpose. My suggestion would be to go for Microservices approach and break your app into smaller pieces according to the type of functionality like you mentioned above. E.g if you would be expecting the high traffic on you platform, then Node.js can be used as the endpoint there to handle that traffic. Normal form processing can be done in Laravel but I would not suggest codeigniter as managing code is difficult there.
So this way you can decide do architecture you app and can use the best of the feature from all the languages. Even it would be easier for you to manage your app based on the functionality and team who will be working on that. Hope you would like my suggestions.
I want to create a video sharing service like Youtube, which users can use to upload and watch videos. I prefer to use Vue.js for front-end. What do you suggest for the back-end? Node.js or Laravel ( PHP ) I need a good performance with high speed, and the most important thing is the ability to handle user's requests if the site's traffic increases. I want to create an algorithm that users who watch others videos earn points (randomly but in clear context) If you have anything else to improve, please let me know. For eg: If you prefer React to Vue.js. Thanks in advance
Node is light and scalable and has been used widely for enterprise solutions that need faster response, reliability and better performance. But at the end of the day, for me, when I start a project, I don't shoot for the stars. I build a small application with the possibility to scale in the future that will test my business idea. If the idea is getting volume then I really start thinking about how am I going to build this aiming a specific volume.
Hello , Our first version of www.voilacabs.com was programed with Code Ignitor PHP API's, and at times during peak hours when there were huge request's made the response time use to vary from 500 MS to 1 Minute, also at time's we might have to end up restarting PHP-FPM which use to bring things to normal.
Also PHP lacks features like promises queue, Asyc task, etc. which is supported in Node.js. In our V1 release we shifted to Node.js and since last 7 month's we see no lag in any API response, also all our API's are responding in 200-300 Milli Second's with about 8000+ Fleet's in peak hours. So my suggestion is to go with Node.js also you can either go with Mysql or MongoDB ( depending on the usage ) for DB choice's.
When it comes to hosting you can go with group replication which can be replicated across 3 different datacenters for your data safety. This approach will make your system largely scalable at 80% less price then amazon webservcies.
I hope that help's .
I have used both node and php in different projects. If it is true that initially node has better performance, in reality there is not much difference and feeling comfortable in the environment you use is very important. Also well written and optimized code. Php is also used by small and large companies. We have a file processing project that responds in less than 300ms with thousands of concurrent users and more than a million daily visits. And the key is to be able to develop quickly and efficiently. Personally I am much better in php than in node, so my code in php is much more clean and optimal than in node, so that's my option. I also find it easier to find php professionals than node, something very important to consider in a project. So the answer would be: choose the environment with which you feel more comfortable, because it will be with which you will have to fight every day.
Hey Mohammad,
In your case I would definitely recommend Node.js as you already seem familiar with JavaScript and that experience will give definitely help you accomplish things faster in the backend side. The best advice I've always seen is to use what you already know, or something you enjoy using, and your passion will do the rest. As some folks have mentioned, Node.js is single-threaded by default but there's a lot of resources available on how to overcome that. Both Node.js and PHP have scaled for many companies, the examples are endless. If something gets heavy you offload it to a background job, if your reads and writes are getting heavy you can do some database optimizations, use an in-memory database and/or caching layers. Most scaling problems are related to how you read/write/process data and infrastructure more than they are to frameworks and programming languages. If you do indeed hit a wall with either of those programming languages being a bottleneck then in you could rewrite that one component only in a more performant language (e.g. Go/Rust/C/C++/Crystal and so on) but that's most likely something you won't have to think about for quite a while. Focus on the stack that you know so you can acquire more users and get to launch your product, scaling problems are nice to have and can be solved if they happen.
Good luck!
Node is single-threaded by default, so you'll need to work on it. In the other hand, Node is better because you are already working with JavaScript as Frontend developer. Also, all you need is to make a prototype and Node is great for building simple API prototypes so I think the best way would be: make a nodejs prototype and test it - you'll get numbers with which you can work later. Take a look at Artillery.io and Mocha for testing. After that you can ask for someone's help in rewriting some endpoints or even make a separate api endpoint using another framework / language. Nginx would be helpful in this.
You can also have a look as Symfony. This has individual components that you can use based on the problem you are solving. In fact, Laravel users few of the Symfony components at core.
Laravel is a great solution to build web-based application using php. Of course it is matter which php version will you use, but php is much easier to develop, maintain and deploy.
Laravel has the necessary resources for you to develop a product (MVP) in which you can scale it over time. Despite saving development time.
The problem I have is: build a scalable backend API decoupled as much as possible from the frontend. And more in general, to build a Web application using some kind of frontend. I would like to compare mainly Liferay with Spring Boot
The most important factors for me are: scalable backend, API documentation, TDD, integration with frontend application for modern reactive interaction
It's a general development question, be more specific, because /dev/std... is a generic approach, not a targeted development. You want to develop PHP or Java? Both are good in their terms, but it's your decision. For PHP Laravel is a robust and exhaustive console enabled framework, featuring rich integrations with virtualization & REST. On the other hand, Spring will bring you learning curve if you are switching from PHP and so on. Try to match your needs with project requirements, it will be easier.
Laravel is lighter weight. Spring Boot quickly becomes a handful, as you'll be downloading hundreds of megabytes in dependencies for a few functions and a dynamic dependency there. There are multiple problems that are solved by "download and put it on your classpath by whatever means. Spring framework will automatically detect it and resolve the issue". It's magical when things work, but my teams have constantly found the limits of the framework's utility and starting points of their burden.
While my expertise with Laravel is more limited, I haven't seen this kind of mess in that community and God bless 'em for it.
Laravel all the way. i like the documentation, simplicity, and scalability
i find python quite resourceful. given the bulk of libraries that python has and the trends of the tech i find django which runs on python to be the framework of choice to the upcoming web services and application. Laravel on the other hand which is powered by PHP is also quite resourceful and great for startups and common web applications.
When I started on this project as the sole developer, I was new to web development and I was looking at all of the web frameworks available for the job. I had some experience with Ruby on Rails and I had looked into .net for a bit, but when I found Laravel, it felt like the best framework for me to get the product to market. What made me choose Laravel was the easy to read documentation and active community. Rails had great documentation, but lacked some features built in that I wanted out of the box, while .net had a ton of video documentation tutorials, but nothing as straightforward as Laravels. So far, I am happy with the decision I made, and looking forward to the website release!
Pros of AdonisJS
- Laravel like25
- Easy to learn24
- MVC23
- Beautiful code21
- ORM Mapper10
- Service Providers6
- Fast development5
- Easy to understand documentation4
- Typescript2
- Schema migrations1
- Ace command-line tool1
Pros of Laravel
- Clean architecture554
- Growing community392
- Composer friendly370
- Open source344
- The only framework to consider for php325
- Mvc220
- Quickly develop210
- Dependency injection168
- Application architecture156
- Embraces good community packages143
- Write less, do more73
- Orm (eloquent)71
- Restful routing66
- Database migrations & seeds57
- Artisan scaffolding and migrations55
- Great documentation41
- Awesome40
- Awsome, Powerfull, Fast and Rapid30
- Build Apps faster, easier and better29
- Eloquent ORM28
- Promotes elegant coding26
- JSON friendly26
- Modern PHP26
- Most easy for me25
- Easy to learn, scalability24
- Beautiful23
- Blade Template22
- Test-Driven21
- Security15
- Based on SOLID15
- Cool13
- Clean Documentation13
- Easy to attach Middleware13
- Simple12
- Convention over Configuration12
- Easy Request Validatin11
- Simpler10
- Easy to use10
- Fast10
- Get going quickly straight out of the box. BYOKDM9
- Its just wow9
- Laravel + Cassandra = Killer Framework8
- Simplistic , easy and faster8
- Friendly API8
- Less dependencies7
- Super easy and powerful7
- Great customer support6
- Its beautiful to code in6
- Speed5
- Eloquent5
- Composer5
- Minimum system requirements5
- Laravel Mix5
- Easy5
- The only "cons" is wrong! No static method just Facades5
- Fast and Clarify framework5
- Active Record5
- Php75
- Ease of use4
- Laragon4
- Laravel casher4
- Easy views handling and great ORM4
- Laravel Forge and Envoy4
- Cashier with Braintree and Stripe4
- Laravel Passport3
- Laravel Spark3
- Intuitive usage3
- Laravel Horizon and Telescope3
- Laravel Nova3
- Rapid development3
- Laravel Vite2
- Scout2
- Deployment2
- Succint sintax1
Sign up to add or upvote prosMake informed product decisions
Cons of AdonisJS
- Small community5
- Poor documentation1
Cons of Laravel
- PHP54
- Too many dependency33
- Slower than the other two23
- A lot of static method calls for convenience17
- Too many include15
- Heavy13
- Bloated9
- Laravel8
- Confusing7
- Too underrated5
- Not fast with MongoDB4
- Slow and too much big1
- Not using SOLID principles1
- Difficult to learn1