Vaadin 10 for new project - vaadin

I'm Java developer and I'm going to start the new project. I have the very limited client-side development skills and this is why I really love the idea of Vaadin framework. I have evaluated Vaadin 10 Bakery App Starter application https://vaadin.com/start#vaadin10 and was really surprised by the amount of custom HTML/CSS/JavaScript written in order to make this application up and running. Right now I'm really confused with this and don't understand how it can simplify my developer's life.
The only application I can apply as my project starter, for now, is the famous QuickTickets Dashboard https://demo.vaadin.com/dashboard/ where all UI is implemented purely in Java. The biggest issue, for now, is that this application is implemented on Vaadin 8 and I'm unable to find its version for Vaadin 10. Do you have something similar for Vaadin 10? If no, do you have the migration guide from Vaadin 8 to Vaadin 10 that I can use in order to try to port this application to the Vaadin 10?

Give the 10 a try!
Yes, it's true. We do not provide starters with Java-only UI, yet. But this does not mean that it is not possible with Vaadin 10. Javier gave a good example already. And we are working on new starters all the time and will allow 3rd party starters in the future, too.
For the migration, please have a look at https://vaadin.com/docs/v10/flow/migration/1-migrating-v8-v10.html. It should give you a good overview.
Besides that, Vaadin 10 reached beta status and we plan a final release this year.
If you never worked with Vaadin at all I would suggest to use Vaadin 10 and not start learning "old" Vaadin (even if it will be supported for years).

Use Vaadin 8
I'm developing with Vaadin for a couple of years and I would recommend to stick to Vaadin 8.
While there is a fundamental change on the horizon with Vaadin 10 (Replacement of GWT by WebComponents), I strongly suggest to stick with Vaadin 8 for starting a new project. Especially if you are also starting with Vaadin.
Vaadin 10 is a developer preview version. There will be a lot of changes along the way. Also the pool of knowledge (documentation, StackOverflow, Forum, etc.) is much much smaller. Also I don't see a stable release happening in 2018. My guess is summer 2019 till it is stable enough to replace Vaadin 8.
Read about the long-term plans for Vaadin 8 on the company’s roadmap. The plans include a regular quarterly release cadence for several years.
Update 2018 March: Vaadin 10 (now known as Vaadin Flow) just went into beta. And the company announced a new release cadence plan, with quarterly releases and Long-Term Support (LTS) releases. Maybe a stable release will happen sooner than I expected. But I still recommend Vaadin Framework 8 for a new project.
Consider Vaadin 14
Update 2019 August: Vaadin 14, the current LTS version, is now released.
If your users will be using recent versions of the modern “evergreen” web browsers, if starting a new project, and if the components you need are available, then Yes I recommend trying 14. Beware of this speed bump I encountered and resolved when getting started with a new Vaadin 14 project.

While Vaadin 10 Bakery App Starter does a good job demonstrating the new features of the framework, it is heavily based on PolymerTemplate and maybe it's not the best example if you are looking for some code more similar to Vaadin 8.
Actually, writing a Java-only UI is still as simple as it was in the previous versions. For instance, the MainView class described in the Vaadin Flow Tutorial (excerpt below) contains a Grid and doesn't require writing HTML or JS.
If you go with this approach, you may base your application in the Skeleton Starter App, and replace the ExampleTemplate (polymer) with your own layouts defined in Java code.
#HtmlImport("styles/shared-styles.html")
#Route("")
#Theme(Lumo.class)
#BodySize(height = "100vh", width = "100vw")
public class MainView extends VerticalLayout {
private CustomerService service = CustomerService.getInstance();
private Grid<Customer> grid = new Grid<>();
public MainView() {
grid.setSizeFull();
grid.addColumn(Customer::getFirstName).setHeader("First name");
grid.addColumn(Customer::getLastName).setHeader("Last name");
grid.addColumn(Customer::getStatus).setHeader("Status");
add(grid);
updateList();
}
//etc...
}

I've made this modified version of the Beverage Buddy app starter you can check out: https://github.com/OlliTietavainenVaadin/drink-starter-flow. Only Java used there, no CSS or JavaScript.
Edit (01/2020): this is probably no longer a good idea to use, you should go with Vaadin 14 instead.

If you are okay with Kotlin instead of Java, you can try out https://github.com/mvysny/vaadin-kotlin-pwa . The goal with that app is to not to use Polymer Templates at all, and orchestrate everything pure server-side, like we did with Vaadin 8. Everything should be explained in the Github readme - if not, please let me know and open a bug report.

Related

How do I check the stability of multiple beta versions of software that all needs to build together?

My team is developing an iOS app with ARKit in Unity. Until the release date in September, we have to rely on beta versions of Xcode, iOS 11, Unity, and the Unity ARKit plugin. We lost almost a day of development time trying to figure out what was breaking, which turned out to be these beta version issues.
I want to be able to know what combinations of different versions of each system work so we can quickly identify issues. For example, something that says "the ARKit sample app from Xcode 9 beta 2 builds with Xcode 9 beta 4 but not vice versa" and "the Unity ARKit sample app does not build with version 2 of the plugin and and Xcode 9 beta 4."
I've heard tools like Jenkins or Travis mentioned but I don't know what they do or how they get put together.
We're a team of four college students with no industry experience beyond internships, so perhaps that's relevant to making sure this isn't an XY problem.
[Lastly, apologies if this is not the right forum for the question. I'd be happy to close this and post somewhere else.]
Unfortunately that's the nature of the beast when using beta tools and API's. Things will break and change. You are on the bleeding edge as they say, so when you experience an incompatibility you may very well be the very first person to 'uncover' it. Be sure to file bug reports as you discover those and be active on forums and communities as much as possible.
Your best source of information is from the vendors themselves. Release notes specifically are a valuable piece of information. For Xcode and Apple technologies, go over to the downloads section of the developer portal and read the release notes of the relevant tools and platforms:
Take a look at the known issues:
Same thing for Unity or any other tools:
I'm not sure how build tools such as Jenkins will help you out. You might be able to set-up a working build pipeline with specific versions of the tools in question. But seeing as how these tools and API's are in constant flux (and this stage, for good reasons of course) those pipelines might get deprecated very quickly...

How to do floating Native UI (Android) using cordova-ace plugins?

I am looking for documentation for Ace to do "Floating UI" , i want to to like facebook "Chat Heads". So far there is no documentation only mentioning coming soon , which means avaliable but undocumented right?. Is it already available in github latest master?
They decided to close the support for this project:
As of December 2016, this project is no longer maintained by Microsoft. We built ACE to provide developers with an “escape hatch” to access native code from within JavaScript. After nearly a year in production, we learned that most developers are satisfied with the access granted by Cordova’s Plugin Model. Thus, we’ve discontinued active development. We appreciate your interest in the project and hope you found it exemplary of Microsoft’s commitment to experimentation and open source software. if you're interested in continuing this project, please feel free to fork it. As of December 2016, we will no longer monitor or respond to open issues. You can keep up with other projects from Microsoft’s Cordova team by visiting http://taco.visualstudio.com. Thanks for your support!
I was also looking some plugin to implement "chat heads" in Cordova, without any luck :(

Is the DCEF3 being kept up to date?

When I go to chrome://version/ in my chromium wrapper component (DCEF3) I get this:
My question is: Are these versions up to date or dcef3 project is not active?
I want to start a windows project with Chromium, I prefer Delphi for this but CefSharp seems a more active project. I'm wonder if it would be more advantageous to use it instead DCEF3.
Unfortunately this project seems to be dead. I could contact the owner by email sometime ago, i even offered to donate to help, but at the time he did not have a paypal account.
It's sad because it's a very good and stable component, but if no updates are made, at least using new Chromium versions, it will become obsolete soon.

Questions on backwards compatibility of Firefox Addons/Extensions

Background info:
Over the past week, I have been messing around with Chrome extensions and had no problem creating my extension. Great, Chrome rocks for making the development process very easy to learn, and, well... just easy!
Now I have it in my mind that I'd like to create this extension for as many browsers as I can, so I decided on Firefox next.
What a mess! There documentation has done nothing but give me a headache and waste my time so far, VERY convoluted and just generally unorganized.
I have managed to locate a code sample for a simple extension that I think I can use as a starting point and have begun messing around with - fine...
I have learned that this sample extension will not work with anything less than Firefox 4, as it uses the bootstrap technique to make the extension installable without a browser restart. Ughhhhhh....
Now we arrive at my questions:
Is it possible to develop an extension for Firefox 7 that will work with previous versions of Firefox? I don't even care about anything prior to Firefox 4, if that's the cutoff point for restart-less installations. It would be nice to know that what I am spending all this time making will work consistently and for more than a week when the user is prompted to upgrade next.
How about the reverse? Can I create an extension that is compatible with Firefox 3.5 through Firefox 7? I realize it would require a restart to install, but that would be acceptable if it resulted in a working extension regardless of the version.
Can anyone with experience on this stuff share a bit of what I'm getting myself into here? It seems like this is a nightmare of a platform to develop on, and that I will be constantly fixing my extension.
One last piece of relevant information:
The extension I am developing is purely javascript based - this stuff should work (I think?) because it's dependent on just one feature "content scripts" that really shouldn't be changing in implementation between versions at this point... right?
So what exactly am I missing? How do you create easily manageable Firefox extensions that will work in all versions of the browser?
Thanks everyone! :)
You have to distinguish between "traditional" extensions and extensions built with the Add-on SDK. The former are far more powerful given that they have direct access to all APIs the browser uses - but that's also the reason why they are more complicated to write and why the documentation is rather unordered (there are simply very many things that you could do, far more than you could with Chrome). They are also more likely to break as the browser changes. The Add-on SDK on the other hand gives you a limited API much like Chrome. The Add-on SDK currently supports everything from Firefox 4 onwards (yes, because of restartless installation), with the promise that browser changes will merely require your add-on to be recompiled with a newer version of the Add-on SDK. In fact, that recompiling will likely happen automatically in future for add-ons hosted on addons.mozilla.org. On to your questions:
Is it possible to develop an extension for Firefox 7 that will work with previous versions of Firefox?
Sure it is. The Add-on SDK currently marks your add-on as compatible with anything between Firefox 4 Beta 7 and Firefox 8 Alpha 1. Even as traditional add-ons go - starting with Firefox 4 the differences between particular browser versions are rather small, most things work in all of them. You can also stay compatible with Firefox 3.x but depending on what you do it might require some effort. Important information:
Firefox 4 for developers
Firefox 5 for developers
Firefox 6 for developers
Firefox 7 for developers
How about the reverse? Can I create an extension that is compatible with Firefox 3.5 through Firefox 7?
It doesn't matter which way you go. I wouldn't recommend spending much time on Firefox 3.x support however. With Firefox 3.5 no longer supported the only relevant version is Firefox 3.6. According to the statistics of my add-ons roughly 18% of the Firefox users continue using it. In the next few months this percentage will get significantly smaller, especially when Mozilla announces end-of-life for this branch. So for a new add-on supporting it is usually not justified.
Can anyone with experience on this stuff share a bit of what I'm getting myself into here?
Depends on how complicated your add-on will be. Given that you are developing an equivalent to a Chrome extension, you will most likely be using the Add-on SDK which means that there won't be any compatibility problems. As traditional add-ons go, simple add-ons that don't rely on some obscure implementation details also typically don't have any trouble staying compatible (I have two add-ons that didn't need a single adjustment since Firefox 3.5). Add-ons that go deep down into the system are more problematic of course.

Is there a replacement component for dcmemo (Dream Company) for Delphi?

I've used a component called dcmemo which is part of a component pack from Dream Company which went out of business a few years ago. Now that I'm upgrading to the latest Delphi I can't install this component dispite having the source and making tons of fixes to it.
After looking around on the web everyone pretty much says it's extremely difficult to upgrade the dream company components to work with the latest delphi which leaves me looking for a replacement which can do almost the same stuff.
I'm sure someone has had this exact same problem before. What can I replace dcmemo with?
Try SynEdit. It's free and has been under development for a long time. I'd advise you use the latest sources which includes a code folding and tested and working code/dpks for most every version of delphi.
If you have svn installed, use the command below to get all the files.
svn co https://synedit.svn.sourceforge.net/svnroot/synedit synedit
I've used TPlusMemo for many years and have found it well worth the price. It has been recently upgraded for XE. http://www.ecmqc.com/plusmemo/pmHome.htm
Good luck!

Resources