Spring

Spring

Application and Data / Languages & Frameworks / Frameworks (Full Stack)
Needs advice
on
MongoDBMongoDBNode.jsNode.js
and
ReactReact

Hello,

I will be programming my project in the coming months. I would need advice on the technology I will use.

I focus mainly on mobile apps, so it's clear there that it will be a native app written in Kotlin.

I will also need a backend (database, API). In the database, I will need to store words and their translations along with users and some statistics to start with.

I don't know which database to choose, whether NoSQL or SQL. Maybe NoSQL would suffice for some words and key-value data.

I would like to connect the web and a chrome extension to that backend. I assume that chrome extensions are made in JavaScript and I would use either Vue.js, AngularJS, or React on the web. The web would be quite simple, some flashcards, statistics, and so on ... I don't know which framework would be ideal, I've never done it, I'll be basically learning it. Ideally, also where you need as little CSS as possible.

With that backend, I have a dilemma as to which framework to use. Basically, it will be such a new for me, I just played with Flask a little bit, but It doesn't matter. Basically, everything runs on JS except the Android app. So is it advantageous to choose Node.js on the backend? I have no experience with this, is it an advantage when everything runs in almost one language? I also thought about Flask / Django, but I also quite like Node.js since it's in JS. But I'm open to all the possibilities of .NET, Spring .... What would be your choice?

To summarize: Android App - Native app in Kotlin Chrome Extension - JavaScript (I don't know if it can be done in anything else) Web - Vue, Angular or React and that's JavaScript Database - SQL / NoSQL? - I don't know which is more suitable, or some specific types Backend - the dilemma of what language and framework to use

I'll write everything myself, it's a project for school, but I want to move it to a higher level and release it. If it doesn't work out, at least I'll learn something. Thank you for the answers.

READ MORE
9 upvotes·195.3K views
Replies (2)

Let's start with the database. First, in my experience, there are few applications where choosing a document database (NoSQL) over a relational database (SQL) is advantageous. While document databases are conceptually very straight forward, I find the tradeoffs down the road are simply not worth it (I wont get into all the details here, but please do some research on the downsides of NoSQL databases). If your data storage needs were exceedingly simple, I might reach for something from the Google Firebase suite, Realtime Database or Cloud Firestore; but I find even simple storage needs tend to expand and grow over time as your application matures. Postgresql is an excellent choice, and an absolute powerhouse for a ton of applications. With the somewhat recent additions of hstore, json, and jsonb datatypes, the advantages of reaching for a pure document datastore melt away.

For the Chrome extension, I would probably favour going for something a bit more lightweight than React or Angular. I'm a huge fan of React, but it comes with a somewhat hefty download, so if it were me, I might reach for Vue instead on that one. React is better for bigger, more complex single-page applications, whereas Vue is probably a better fit for simpler applications which require a smaller set of components.

For the backend, I would pick something mature with a strong and active community. Flask is a nice choice, but I've felt a bit "on my own" when using it in terms of community/documentation. I've used Rails extensively, but the learning curve is a bit of a headache; the time you'll save using Rails is very much down-the-road rather than immediate. If you're comfortable already with Javascript, then node + express is probably your best bet.

But, let me change my tune a little bit. You mentioned that this is a school project. In light of that fact I suggest you gravitate towards languages and frameworks that will help grow your career. Making smart choices based on the requirements of the task at hand is always prudent, but in this case I think it may be more valuable to gain some experience with some of the current "industry standard" stacks. Ask yourself what you can build a career on, and dabble in some of those areas until you find something that clicks for you. So, here are my revised answers, with options for each category ranked in order of preference

  • Database: PostgreSQL, MySQL
  • Backend: Node/Express, Rails, Django, Spring
  • Frontend: React, Angular, Vue
READ MORE
10 upvotes·11K views
Principal Engineer at Crowd Emotion / Element Human Ltd·

Hi Karin, I really liked your take on this whole school thing, I'm amazed you want to put such a huge effort in it.

And please appreciate your project is a lot to take and it can also be a lot to do: the risk is going beyond the assignment for the sake of exploring technologies, architecture styles, desing patterns, and so on, just for the sake of it (don't take me wrong, I've done it all my life).

So my first advice, as quite an experienced software developer, is always go back to some fundamental principles before starting anything, before thinking to anything, and perhaps the most important principle of all is KISS: Keep It Simple and Short (search it up, there are a few versions of what those letters represent :) ). In your case, since it's a school assignment, simplicity is even more important because it makes things clear which makes learning so much more effective.

When dealing with complex tasks like this, another fundamental element is focus: where should you keep your attention when designing and then developing a software product?

In this specific case, I lack what the original assignment was requesting, but I'm quite sure the point (or one of the points) was to make you think and then act on something that didn't require months to be developed, it was to make you learn how to accomplish a task without getting lost in details or in a project too big to be finished in a finite time.

I may be wrong, but I'll keep this in mind when writing the below lines.

FIrst, the architecture of the software product looks like a classic three tiered one: frontend, backend, database. Keep in mind another fundamental principle here: the separation of concerns, which leads to different decoupled architectural elements. Also, just for clarity, the frontend(s) will talk only with the backend, while the backend will talk with the database: this will help you isolate the database from the frontend, ideally enabling you to change database technology if needed.

Second, you explained you want to go web and mobile for the frontend tier: this inevitably will lead you to the conclusions you pointed out correctly, having to choose a number of platforms and languages to basically create the same application, but the fragmentation of different knowledge and procedures can make your life quite complicated and probably miserable.

Personally I'd go for native Android and React for web. Recently, though, I stumbled upon Flutter which, through the same codebase (in Dart, very similar to JavaScript) can create for you applications for mobile (Android and iOS) and the web: I tried it and I've been blown away by the effectiveness and easiness of using it.

For the backend, keep playing with Flask and build a RESTful API, all in all python is a language way more readable and maintainable than JavaScript, and with node.js is so easy to fall into the callback hell (recently less and less but still). Stay away from Java and its ecosystem if you want to finish you project at all (just kidding).

On the database tier, remember NoSQL databases can be quite powerful, but in your case try something very simple (redis can do), or just go with MongoDB as it makes easy to start and evolve your data structures. If you're more the structured type and you want to go RDBMS, try postgresql, it's easy to start (it has also NoSQL features) but so much more powerful and you could learn real SQL on it (stay away from the omnipresent MySQL, it's kind of odd sometimes).

I hope the above didn't sound too much of a lecture, and I also really hope you learn the most important lesson of all: always keep in mind the big picture!

READ MORE
7 upvotes·11.1K views

Hi

I’ve been using Django for the last year on and off to do my backend API. I’m getting a bit frustrated with the Django REST framework with the setup of the serializers and Django for the lack of web sockets. I’m considering either Spring or .NET Core. I’m familiar with Kotlin and C# but I’ve not built any substantial projects with them. I like OOP, building a desktop app, web API, and also the potential to get a job in the future or building a tool at work to manage my documents, dashboard and processes point cloud data.

I’m familiar with c/cpp, TypeScript.

I would love your insights on where I should go.

READ MORE
Not Your Average QS - Web Development and QS Blog (Notyouraverageqs.com)
7 upvotes·552K views
Replies (3)
Recommends
on
.NET Core

Theres a logt going on in the dotnet world. I currently do all my Rest APIs with asp.net core.

The Setup is very easy as the .net web sdk provides with a lot features you don't want to keep yourself concerned with. You can integrate Swagger with little effort.

READ MORE
10 upvotes·367.6K views
Researcher at Florida Institute of Technology·
Recommends
on
Spring Boot

Spring Boot is the lightweight of the Spring framework. I used the Spring framework before, and I fall in love with the Spring Boot. I also use .NET core, but still, I like Spring boot the best. If you have time then you should experience both. You are more than halfway in gaining experience. My suggestion is always to try to learn many things as you can.

READ MORE
6 upvotes·370.3K views
View all (3)
Needs advice
on
MagentoMagento
and
Reaction CommerceReaction Commerce

I am consulting for a company that wants to move its current CubeCart e-commerce site to another PHP based platform like PrestaShop or Magento. I was interested in alternatives that utilize Node.js as the primary platform. I currently don't know PHP, but I have done full stack dev with Java, Spring, Thymeleaf, etc.. I am just unsure that learning a set of technologies not commonly used makes sense. For example, in PrestaShop, I would need to work with JavaScript better and learn PHP, Twig, and Bootstrap. It seems more cumbersome than a Node JS system, where the language syntax stays the same for the full stack. I am looking for thoughts and advice on the relevance of PHP skillset into the future AND whether the Node based e-commerce open source options can compete with Magento or Prestashop.

READ MORE
12 upvotes·721.1K views
Replies (2)
Web Application Developer at Fortinet·
Recommends
on
Magento
in

Where im confused is why you think PHP isn't commonly used. It powers the grand majority of the internet, and as a language designed entirely around making websites (as opposed to general purpose languages like Java that have crammed in an http server to make it work for websites too), its a language that's incredibly easy to jump into, and offers a lot of flexibility and versatility on how to navigate web facing challenges.

Also don't kid yourself about the node "one language" ecosystem. You will find yourself often visually confused as you jump between editor tabs which .js is aimed at the browser, and which .js is aimed at the server, and gets even weirder when using js based templating engines. (This is why in my node projects with a front-end, I use Angular, which uses TypeScript),). JS was never intended to run outside of a browser based VM context, its just yet another language we've jimmyrigged an http compatible socket listener into and given filesystem access.

If you're worried about wasting your time jumping into bed with PHP, don't be. Its not only extremely widely used, but after 20 years its still incredibly relevant, high performing (you will be shocked to see how fast php7 actually is), high paying (yes, six figures), and the language itself has evolved leaps and bounds into a multi-paradigm beast of a toolkit bespoke to solving web challenges.

If you liked Spring, check out Symfony sometime. Its a PHP7 web framework that takes a LOT of inspiration from Spring, and pairs up with Doctrine, a PHP7 ORM that takes a great deal of inspiration from Hibernate. The company that makes Symfony, is also the same people behind Twig, which is so ridiculously good and popular, its been ported to pretty much every language including Java and node.

As for free packaged out of the box storefronts, Magento is a total beast of a package, and isn't for the feint of heart. But it is also THE most complete and ridiculously configurable self hostable e-commerce system you'll ever come across. Many web professionals have made entire careers completely around Magento. I am not one of them, but I have used Magento, PrestaShop, and several others, and I keep coming back to Magento. Outside of hosted shops like Shopify, Magento is, as far as I'm concerned, where you wanna be for a totally custom, plug-in based shop front for a website. The only time I'd recommend different, is if a customers website is powered by WordPress, then WooCommerce is where you wanna be.

READ MORE
8 upvotes·25.6K views
Technical Lead at DPO International·

I prefer to use Magneto because it open source and has a lot of extensions in it so it's so faster for building a website

READ MORE
2 upvotes·8.2K views
Needs advice
on
Node.jsNode.js
and
SpringSpring

I am provided with the opportunity to learn one of these technologies during my training. I have prior experience with Spring and found it tough and still haven't figured out when to use what annotations among the thousands of annotations provided. On the other hand, I am very proficient in Java data structures and algorithms (custom comparators, etc.)

I have used Node.js and found it interesting, but I am wondering If I am taking the risk of choosing a framework that has a comparatively lesser scope in the future. One advantage I see with the node.js is the number of tutorials available and the ease with which I can code.

Please recommend which path to take. Is Spring learnable, or should I spend my energy on learning Node.js instead?

READ MORE
8 upvotes·270.7K views
Replies (2)
Recommends
on
Node.js
TypeScript

I do not know Spring or your company/specialty. Of course it must be learnable and I won't tell you to give up on anything. Java is and will remain valuable.

Regardless, I don't think "lesser scope" is a valid strike against Node.js here. Node.js fulfills JavaScript's original vision of an everywhere language and can run anywhere that Java can. It serves webpages, communicates with hardware, powers command line tools, and builds desktop applications. A huge complexity-saver for teams running many environments (my biggest regret is that it cannot run a microcontroller).

Node.js' biggest practical weakness is that JavaScript is less structured than Java. Luckily, the large influx of Java developers has been helping with this: gaps like constants and private properties are gradually filling in, and TypeScript firms up the types to the point where JavaScript looks a lot like Java.

Probably more potential competition from the larger pool of JS developers, but the compensation is allegedly similar so I guess there is a similar supply/demand situation.

READ MORE
9 upvotes·214.9K views

hi this depends where you want to advance . If you want to work for an big aged company with a lot of legacy go the spring way (banks, insurances netflix etc ) if you want to go the new agile fast cloud way learn node js it is much more suited for cloud and micro service even spring cloud can do that as well but it is much more heavier

READ MORE
1 upvote·214.9K views
Needs advice
on
.NET.NET
and
SpringSpring

Hello, I need clear advice. I am a fresher, and I want a bright and demandable career. I cannot decide which one will be better for a long and bright career .NET or Spring (Java)? Please give me some career advice. I will be very grateful to you.

READ MORE
3 upvotes·23.4K views
Replies (1)
Software Engineer ·
Recommends
on
Spring

In my opinion, between these 2 Spring (Java) would be a good choice. .NET is also good, but in general Spring (Java) is more flexible as a back-end implementation and it does provide a very easy REST and other integration in Spring (Spring Boot). This makes it a good independent back-end and any front-end built on any technologies like React, Angular, Vue.js can be used easily with such a back-end. WIth .Net as well this is feasible but .Net is more suitable when you are dealing with more Microsoft technologies. Also comparatively, Spring (Java) gives a better pay scale in the industry compare to .Net with similar experience. This is just my opinion based on my experience so far.

READ MORE
2 upvotes·1.3K views

Is learning Spring and Spring Boot for web apps back-end development is still relevant in 2021? Feel free to share your views with comparison to Django/Node.js/ ExpressJS or other frameworks.

Please share some good beginner resources to start learning about spring/spring boot framework to build the web apps.

READ MORE
16 upvotes·761.1K views
Replies (1)

Java in general, in my opinion, is somewhat outdated in 2021. C# is a better language, and therefore, I think ASP.NET (Core/.NET 5) should be used over it. Node.js isn't bad if you are getting started, or if you need to prototype an app. I use Node in production because of TypeScript, but .NET is a really good framework that has excellent performance.

READ MORE
3 upvotes·219.4K views
Software developer at Civil aviation authority of Mongolia·
Needs advice
on
JavaJavaJSFJSF
and
SpringSpring

Hi everyone

I need some help choosing from the following choices. I know Java and am using JSF for web development. But that is not popular in my area. At least there is no shared host for java web apps. Choices are:

  1. Do I need to learn a new language to build web apps?
  2. if yes, what language is good for an individual developing web apps, not for enterprise systems.
  3. if no, Should I shift to the popular Spring framework?
  4. I can also develop mobile apps using Android and iOS, both. So I needed some REST API webs for my mobile apps. But I don't know what technology is good for me for the above purpose.

Maybe Python is a good choice for me, but I'm a bit afraid of starting a new language. Please give me some suggestions.

Thank u.

READ MORE
6 upvotes·48.4K views
Replies (3)
Recommends
on
Java
TeaVM

You should try TeaVM, which lets you compile Java code to run inside a browser: https://teavm.org/ You can deploy TeaVM-compiled applications on any static hosting environment, they are HTML and JS files. See examples here: https://teavm.org/gallery.html For an article on TeaVM, read java Magazine here: https://blogs.oracle.com/javamagazine/java-in-the-browser-with-teavm

READ MORE
6 upvotes·1 comment·14.8K views
Amarsaikhan Bold
Amarsaikhan Bold
·
May 15th 2021 at 10:52AM

thanks i will try it.

·
Reply
Recommends
on
Java
Spring

Hi since you already have a Java background, I would reccomend you to go for Spring MVC or Spring Boot for Web Applications. Spring MVC is more convenient than JSF. Regarding UI, would reccomend using Angular JS. For REST API, you can use Spring Rest Controller classes.

READ MORE
4 upvotes·1 comment·14.3K views
Amarsaikhan Bold
Amarsaikhan Bold
·
May 14th 2021 at 3:50AM

thank u.

·
Reply
View all (3)
Technical specialist at HCL·
Needs advice
on
Apache WicketApache Wicket
and
Spring MVCSpring MVC

Hi Team, We are currently managing an application which was developed using Apache Wicket. Recently, we had upgraded our application from Wicket 6.30 to 8.11. Considering the amount of time we spent for upgrade and lack of wicket skilled developers, its becoming hard to maintain the application. We are planning to migrate the application from Wicket to AngularJS. Please advise on the best approach and any tools which can migrate wicket components to Angular and Spring components.

Thanks, Satya

READ MORE
4 upvotes·7.1K views
Replies (1)

Hi, my advice would be; instead of abandoning Apache Wicket due to a lack of knowledge/Wicket-Devs I'd like to recommend that you employ an experienced Wicket developer.

Coincidentally, I have quite a lot of experience in using that exact framework and would be able to start ASAP ;-)

Regards.

READ MORE
2 upvotes·3.2K views
Needs advice
on
ReactReact
and
SpringSpring
in

I am looking for guidance on which one to use for developing a web portal. The portal is also to be used on a mobile phone. My consideration is Spring and React. Please advise on which one you'd advise and why.

READ MORE
3 upvotes·85 views
Replies (1)
Recommends
on
React

We use react because we wanted to go to react-native one day. Vuejs is a simpler if you are not looking for a mobile app version and scale to a huge team. You mean spring for the backend ? Are you choosing spring because of being used to Java or are you looking for other langs ?

READ MORE
2 upvotes·50 views
Needs advice
on
AkkaAkkaProject ReactorProject Reactor
and
RxJavaRxJava

I am working on a project to read data (millions of data) from JMS queue, process the data, and push it to another queue. I am new to Java world, and I have been reading about Spring, Project Reactor, ReactiveRx, etc., for the last couple of days. I am looking for a framework that is easy to use, has less ramp-up time, thread-safety, non-blocking I/O, and less latency. Based on my reading, I am leaning towards ProjectReactor since it has integration with Spring Boot, and it directly interacts with Java functional API, Completable Future, Stream, and Duration. Also, later on, I may have to extend this to read from a different source, so the code should be extensible.

I would like to get thoughts/advice on this.

READ MORE
4 upvotes·136.3K views
Replies (1)