Monday, September 7, 2015

Apache Tamaya - the new Configuration API

It was quite s long time since I have blogged here, but now it is definitive time to reactivate this blog and get in contact with all interested people on the configuration topic.

History

After JavaOne 2014, when the configuration topic was cancelled from the EE8 list, David Blevins and others proposed to start an Apache project for several reasons:
  • let focus people with experience in the topic to identify a common feature set
  • implement the ideas as part of an Apache project to provide the ideas using a free nd redistributable licence
  • use a common proven organisation also capable of generating successful adoption.This was when Apache Tamaya was put to incubation. Following we had several discussions, hangouts, mails. As a result Apache Tamaya is now available as a first release 0.1-incubating, ready to be used.
Also to be mentioned is that also Mark Struberg and Gerhard Petracek, the guys behind Deltaspike, joined this project and actively contributed to it. Given that I think it is worth to have a deeper look at the project. This is what this blog is all about.

The Apache Tamaya Project

Like a Java Specification Request

Apache Tamaya is built-up similarly to a Java Specification Request (JSR). It as an API that defines the artifacts user's typically interact with and it provides a reference implementation that implements the API so it can be used for real world projects. The reason for doing so are the following:
  1. Separating an API from the implementation gives you a very clear and clean view on the problem. You must isolate the essence of your problem and omit all kind of over-specific aspects. If done in a good way, this leads to a simple and well comprehensive API, which at the same time is powerful enough to support at least most of all other requirements (e.g. using extension points or hooks for plugin in adapted or additional functionality (aka service provider interfaces/SPIs).
  2. The API may be more independent than the reference implementation regarding its compatibility requirements. As an example the Java 7 based API of Apache Tamaya in fact is also compatible Java 6 and Java ME platforms.
  3. You can start with a minimal set of functionality on the API and extending it step-by-step as needed. Very extension must be checked, if it is really necessary or if the requirement not also can be implemented using the existing API/SPI. This ensures your API is really focusing on the minimal aspects thefore getting lean and clear.
  4. Last but not least, somehow corresponding to the previous point, adding new functionality does not interfere with the basic API/implementation, making it very easy to add new functionality. The Apache Tamaya project also contains quite a few of so called extensions that only depend on the API, so the project has already proven being able to cover this aspect very efficiently.
The only difference to a JSR is the current lack of a Technical Compatibility Kit (TCK) that ensures that different implementations of the API are compatible with a common set of rules. Similarly we do not have something like a "specification" (but we have a very extensive documentation, somehow quite similar to a specification, also covering many of the aspects/discussions done during the evaluation phase for the Java EE JSR 2 years ago).

Compatibility

Apache Tamaya currently supports both Java 7 and Java 8. Reasons behind is that there is still plenty of code, especially in the enterprise context, running on Java 7. And we wanted people to be able to use Apache Tamaya also before they move to the Java 8 platform. Said that the API can be added to your maven build quite easily:

<dependency>
  <groupId>org.apache.tamaya</groupId>
  <artifactId>tamaya-java7-api</artifactId>
  <version>0.1-incubating</version>
</dependency>

Or, when with Java 8:

<dependency>
  <groupId>org.apache.tamaya</groupId>
  <artifactId>tamaya-api</artifactId>
  <version>0.1-incubating</version>
</dependency>

Similarly the implementation (called core), can be added similarly:

Compatible with Java 7 and beyond:

<dependency>
  <groupId>org.apache.tamaya</groupId>
  <artifactId>tamaya-java7-core</artifactId>
  <version>0.1-incubating</version>
</dependency>

Compatible  with Java 8:

<dependency>
  <groupId>org.apache.tamaya</groupId>
  <artifactId>tamaya-core</artifactId>
  <version>0.1-incubating</version>
</dependency>

The Main Concepts

Configuration Abstraction and Access 

One of the main objectives is to define an abstraction for configuration and define a common way of accessing it using simple Java code. So the first thing is to define a model for configuration:

public interface Configuration {

  default String get(String key) {...}
  default <T> T get(String key, Class<T> type) {...}
  default Configuration with(ConfigOperator operator) {...}
  default <T> T query(ConfigQuery<T> query) {...}

  <T> T get(String key, TypeLiteral<T> type);
  Map<String, String> getProperties();

  // not available for Java 7
  default Optional<String> getOptional(String key) {...}
  default <T> Optional<T> getOptional(String key,
                                      Class<T> type) {...}
  default <T> Optional<T> getOptional(String key,
                                      TypeLiteral<T> type) {...}
  default Optional<Boolean> getBoolean(String key) {...}
  default OptionalInt getInteger(String key) {...}
  default OptionalLong getLong(String key) {...}
  default OptionalDouble getDouble(String key) {...}
}

So looking at this interface some important key decisions can be identified:
  • Configuration entries are accessed using String keys.
  • Configuration values are basically modelled as Strings
  • Typed access is supported as well using Class or TypeLiteral.
  • Configuration can be accessed key by key or by accessing the full properties map (getProperties). Hereby there is a constraint that the returned map may not contain all entries that would also be available when accessing them individually. Reason is that some configuration sources may not be able to list all the entries (aka being scannable). Refer also the SPI part, when the PropertySource interface is discussed, for further details.
  • The methods with, query define so called functional extension points, allowing additional functionality being added as operators/queries that can be applied on a configuration.
  • Finally, only defined in the API version depending on Java 8, are all the methods returning Optional values. These add support for the new Optional artifact introduced with Java 8. Similarly all the default methods were replaced in the Java 7 variant with corresponding abstract base implementations shipped with the reference implementation.
Instances of Configuration can be accessed from a ConfigurationProvider singleton:

Configuration config = ConfigurationProvider.getConfiguration();

Hereby  always a valid instance must be returned. It is not required that always the same instance is returned. Especially when running in a contextual environment, such as Java EE, each context may return different configurations, also reflecting the configuration resources deployed in the different Java EE artifacts. Similarly also OSGI based environments have their own classloader hierarchies, that may require isolation of configuration along the classloader bounderies.

Functional Extension Points

In the previous section we already mentioned the methods with and query. These take as argument a ConfigurationOperator or a ConfigurationQuery<T>, which are defined as follows:

@FunctionalInterface
public interface ConfigOperator {
    Configuration operate(Configuration config);
}

@FunctionalInterface
public interface ConfigQuery<T> {
    T query(Configuration config);
}

So basically ConfigOperator acts as a mapping that derives a Configuration from another Configuration, whereas a ConfigurationQuery<T> can return any kind of result. Both constructs allow adding functionality in multiple ways without having to deal with it on the Configuration interface, e.g. aspects like:

  • Filtering of configuration for specific use cases, e.g. recombining entries, or removing entries out of scope for a certain use case
  • Masking of entries or sections for security reasons
  • Creating typed objects based on configuration
  • Statistical details on a given configuration, e.g. the defined sections
  • Configuration validation and documentation
  • Conversion of configuration, e.g. to a JSON representation
  • and much more.

For running examples you may consider having a look at the tamaya-functions extension module, which already implements quite a few of aspects.


A minimalistic Example

To clarify things a bit more let's create a small example, which just uses the base mechanism provided with Tamaya's core implementation. Let's assume we build a small node, that a micro-service performing a simple compound interest rate calculation (I will omit the financial details how this is achieved here). Such a calculation basically is defined as:

We assume that the interest rate is something that is configured for this component, so in our component we simply add the following code:

BigDecimal interestRate = ConfigurationProvider.getConfiguration()
                .get("com.mycomp.ratecalculator.rate",
                     BigDecimal.class);

When using Java 8 we could also easily combine it with a default value:

BigDecimal interestRate = ConfigurationProvider.getConfiguration()
                .getOptional("com.mycomp.ratecalculator.rate",
                             BigDecimal.class)
                .orElse(BigDecimal.of(0.05d));

Given that we can easily implement our business logic, also using the JSR 354 type (see http://javamoney.org):

public class MyRateCalculator implements RateCalculator{

  private BigDecimal interestRate = ConfigurationProvider
                .getConfiguration()
                .getOptional("com.mycomp.ratecalculator.rate",
                             BigDecimal.
class)
                .orElse(BigDecimal.of(0.05d));

  public MonetaryAmount calcRate(MonetaryAmount amt, int periods){
   ...
  }

}

Now given you have built your logic in a similar way you have multiple benefits:
  • You can deploy your calculator as part of a Desktop application.
  • You can deploy your calculator as part of a Java EE application.
  • You can deploy your calculator in an OSGI container.
  • You can deploy your calculator easily as a standalone micro-service (with an appropriate API, e.g. REST).



Making Tamaya Support Optional

Basically you can even use the Tamaya optional module to integrate with Tamaya only as an optional dependency. This extension module is a very simple module, adding basically only one class to your dependency path, which

  • Ensures Tamaya API is on your classpath
  • Optionally checks if a Configuration is accessible from a given context.
  • Delegates Configuration request to Tamaya, or - if not availalbe - to a delegate passed from your logic, when creating the delegate:
import org.apache.tamaya.ext.optional.OptionalConfiguration;

private BigDecimal interestRate = 
              Optional.ofNullable(
                 OptionalConfiguration
.of(
                    (k) -> MyConfigMechanism.get(k)
                              
// String get(String key);
                 )
                .get("com.mycomp.ratecalculator.rate",
                             BigDecimal.
class))
                .orElse(BigDecimal.of(0.05d));

This allows you to support Tamya Configuration, but you can still use your own default configuration logic as default, if Tamaya is not loaded in your target environment.


What else?

From an API perspective there is not much more needed. The TypeLiteral class used before is the same, which is also known well from Java EE (CDI) and the only other artifact not mentioned is the ConfigException class. Of course, this functionality per se is very minimalistic, but it exactly does, what it is supposed to: it provides a minimalistic access API for configuration. And why we think this is so important? Here is why
  1. Everybody writing components typically writes some configuration logic, but everybody does it different: different formats, locations, key schemes, overridings etc. Also Apache Tamaya neither wants to define what you configure, or where your configuration is located and how it can be overridden. But we define a common API for accessing the configuration.
  2. Given that components from different teams can be more easily integrated within a project, but also within a concrete enterprise context, since all components refer to the same configuration mechanism.
  3. Even better, when using Tamaya overriding rules of configuration can be more or less ignored, since the mechanisms of Tamaya (I will present the corresponding SPI in the next blog here) already provide these mechanisms, so they can be adapted as needed.
  4. Similarly the formats used for configuration and also the fact that configuration may be locally stored in the file system or be remotely distributed is not of importance anymore.
This per se should render Apache Tamaya to very interesting and crucial piece of any application or module architecture. Additionally its SPI brings additional benefits, especially within bigger entprise contexts. We will look at the SPI  and the extensions in the next blog posts here. So stay tuned!

As always comments are welcome. If anybody out there is also thinking of contributing to the project please get in contact with us under dev@tamaya.incubator.apache.org.

And of course, help us spreading words writing tweets, blogs, adopting it, using it, loving it! 

Want to hear more?

Want to know more about Apache Tamaya? Visit our project site or even better join and see us at 






195 comments:

  1. Thanks for sharing informative article on java application development. Your post helped to understand the career in Java. JAVA Training in Chennai

    ReplyDelete
  2. Hi Admin,
    Excellent blog and its totally loaded with valid posts on Java and .Net technology. Consider including RSS feed in your blog, so aspirants like me can follow your blog easily. .Net Training in Chennai

    ReplyDelete
  3. I went through your blog and it’s totally awesome. You can consider including RSS feed in your site, so that we can follow your blog and get latest update direct on my inbox.
    J2EE Training in Chennai
    .Net Training in Chennai
    PHP Training in Chennai

    ReplyDelete
  4. For management and troubleshooting of enormous databases, corporations square measure searching for qualified and licensed dispersions Hadoop experts for the duty. Hadoop Training in Chennai | Hadoop Training Chennai

    ReplyDelete
  5. I would add a RSS feed, if somebody can tell me how this is possible here on blogger (I did not find such a feature) ;)
    Alternately I recommend following me as @atsticks on Twitter, where I will mention all kind of publications, I do, not only the ones here...
    Or the ultimate alternative would be to help us on Tamaya itself. We will support anyone willing to help and you have a good chance that you can present our project at developer conferences thorughout the world and get good visibility ;)

    ReplyDelete
  6. Selenium is a most popular automation testing tool used to validate web application and other internet applications. This test automation tool readily integrates with your web browser and makes complicated testing process lot simpler. Selenium Course in Chennai | Best Selenium training institute in Chennai

    ReplyDelete
  7. Nice blog it is very useful for me. I have to share my website link.
    Each and every year we are providing Cheap and best students Final year projects at Madurai.

    ReplyDelete
  8. I gathered useful information on this point . Thank you posting relative information and its now becoming easier to complete this assignment
    mahjong |geometry dash | hulk|agario| kizi|sniper games| minecraft|halloween | pacman| games

    ReplyDelete
  9. Hi, this is Yasmin from Chennai. Thanks for sharing such an informative post. Keep posting. I did Selenium Training in Chennai at Besant technologies. It’s really useful for me to know more knowledge about selenium. They also give 100% placement guidance for all students.

    ReplyDelete
  10. Very nice piece of article which can help many developers, thank you for sharing your knowledge with us. Keep sharing.
    PHP training in Chennai||PHP course in Chennai ||PHP training institute in Chennai

    ReplyDelete
  11. Thanks for your informative article on software testing. Your post helped me to understand the future and career prospects in software testing. Keep on updating your blog with such awesome article. Best software testing training institute in Chennai | Software Testing Training in Chennai | Software testing course in Chennai

    ReplyDelete
  12. Thanks for sharing detailed information of unified functional testing automation tool. QTP Course in Chennai | QTP training

    ReplyDelete
  13. Excellent article on load testing!!! This testing exhibits the ability of a software application/system to withstand actual load. Loadrunner Training in Chennai | Best Loadrunner training institute in Chennai

    ReplyDelete
  14. The main thing which i like about web designing is that itneeds creativity and we need to work differently acccording to our clients need this needs a creativity and innovation.
    web designing course in chennai|web designing training in chennai|web designing courses in chennai

    ReplyDelete
  15. After the website s completed it is very impoprtant to market it. Be it a brand or a website, if you want to reach a large audiece then effective marketive should done and this can be achieved by SEO.
    Seo training in chennai|Seo training|Seo courses in chennai|Seo training chennai

    ReplyDelete
  16. I appreciate the effort of the blogger. I have one small question which is related to html5. If you could help me out then it would be really helpful. How is the page structure in html5 is different from html4?
    html5 training in chennai|html5 course in chennai|html5 training institutes in chennai

    ReplyDelete
  17. Hi author I actually teach web designing, and after I read this article I was able to clarify a doubt and this helped me understanding a certain concept better and so I could teach my students well. Thank you.
    web designing course in chennai|web designing training in chennai

    ReplyDelete
  18. Nice post !! I really enjoyed your well written article . thanks for share...

    ReplyDelete
  19. Excellent Post!!! Your interview questions on QTP automation tool will assist freshers and experienced professionals to sharpen their skills and be successful in job interview. QTP Training in Chennai | QTP training

    ReplyDelete
  20. If you are willing to develop a website but you dont know web development or coding then relax wordpress CMS platform is just for you. Where you can create website all by yourself.
    wordpress training in chennai | Wordpress course in chennai | FITA Academy reviews

    ReplyDelete
  21. Hibernate and spring are the frameworks of Java. A java developer should be well aware of these frameworks in order to master the technology and work efficeiently.
    spring training in chennai | hibernate training in chennai
    FITA Academy reviews

    ReplyDelete
  22. Java is the most robust secured and multi threaded programming language which is the reason why most the the developers go for java. A single java code can be used for various platforms.
    JAVA training in chennai | java training institutes in chennai | FITA Academy Chennai

    ReplyDelete
  23. Thanks for this valuable info selenium testing is an ope source where it is very useful for the tester to use selenium.
    selenium training in chennai

    ReplyDelete
  24. A good blog. Thanks for sharing the information. It is very useful for my future. keep sharing
    Signature:
    i like play games happy wheels online friv , girlsgogames , games2girls and play happy wheels 2 games

    ReplyDelete
  25. In India thenumber of smartphone users have been on a rise. Among them also the people using android is way to high. Being an android developer would be the dorrect career choice.
    Android training in Chennai | Android course in Chennai | Android training institute in Chennai

    ReplyDelete
  26. Java is a programing language which needs no introduction. Java is immensly popular anguage which is used in building softwares in mobile app or desktop. Even today java is used to program tools like hadoop, owing to this java has becom imensley popular and one of the most preffered language around the world.
    Java training in Chennai | Java training institute in Chennai | Java course in Chennai

    ReplyDelete
  27. Hadoop is one of the best cloud based tool for analysisng the big data. With the increase in the usage of big data there is a quite a demand for hadoop professionals.
    Big data training in Chennai | Hadoop training Chennai | Hadoop training in Chennai

    ReplyDelete
  28. The comments are nothing but spam. You might not care about spam on your blog, but you should care about legit readers who read them expecting a fruitful discussion and find this crap instead.

    ReplyDelete
  29. This comment has been removed by a blog administrator.

    ReplyDelete
  30. Apache Tamaya is a highly flexible configuration solution based on an modular, extensible and injectable key/value based design, which should provide a minimal but extendible modern and functional API leveraging SE, ME and EE environments.

    ReplyDelete

  31. A very interesting article. The insights are really helpful and informative. Thanks for posting.

    Best Java Training in Chennai

    ReplyDelete
  32. This is the selected site free games and play great. Same goes for your play.
    |happy wheels
    |gun mayhem
    |can your pet
    gum mayhem 2
    tank trouble

    ReplyDelete
  33. The blog or and best that is extremely useful to keep I can share the ideas. Age Of War 2
    Big Farm | Slitherio | Tank Trouble
    Of the future as this is really what I was looking for, I am very comfortable and pleased to come here. Thank you very much.
    Happy Wheels | Goodgeme Empire | Slither.io

    ReplyDelete
  34. This is my first visit to your blog, your post made productive reading, thank you. dot net training in chennai

    ReplyDelete
  35. You go to our Web page you can play online games for free.
    Our Web page selection is the biggest collection so you can play entirely for free
    gun mayhem | age of war
    learn to fly | happy wheels game
    tank trouble

    ReplyDelete
  36. I have read your blog its very attractive and impressive. I like it your blog.

    Java Online Training Java EE Online Training Java EE Online Training Java 8 online training Java 8 online training

    Java Online Training from India Java Online Training from India Core Java Training Online Core Java Training Online Java Training InstitutesJava Training Institutes

    ReplyDelete
  37. I have read your blog its very attractive and impressive. I like it your blog.

    Java Online Training Java EE Online Training Java EE Online Training Java 8 online training Java 8 online training

    Java Online Training from India Java Online Training from India Core Java Training Online Core Java Training Online Java Training InstitutesJava Training Institutes

    ReplyDelete
  38. Thanks for sharing this article, The above article having a valuable information. java programming language is very easy to learn.

    ReplyDelete
  39. Really nice and definitely it will be useful for many people. Kindly keep update like this.
    Back to original

    ReplyDelete
  40. Superb. I really enjoyed very much with this article here. Really it is an amazing article I had ever read. I hope it will help a lot for all. Thank you so much for this amazing posts and please keep update like this excellent article.thank you for sharing such a great blog with us. expecting for your.
    Digital Marketing Company in India

    ReplyDelete
  41. Facebook has become a part of my life, not only helped me to connect with you but also where I can share every moment in life. I really like the convenience that it brings
    facebook baixar , baixar facebook , baixar facebook gratis

    ReplyDelete
  42. The article gives me a lot of interesting information. I still often share life experiences with friends. And I enjoyed the convenience and attractiveness of free messaging app
    whatsapp baixar , baixar whatsapp , baixar whatsapp gratis

    ReplyDelete
  43. That really great information.....
    keep me informed
    best online website development courses

    ReplyDelete
  44. You post explain everything in detail and it was very interesting to read. Thank you. nata coaching centres in chennai

    ReplyDelete
  45. Very Useful Blog I really Like this blog and i will refer this blog...
    And i found a some usefull content for Online Java training check It out .

    ReplyDelete


  46. Thanks i like your blog very much , i come back most days to find new posts like this!Good effort.I learnt it



    Java and J2EE Training in Chennai - AmitySoft

    ReplyDelete
  47. We are supporting the students to get placed. Android is a very good technology for the job opportunities. Overall 45% of job vacant available for Android. Android Training in Chennai | Android Training in Tambaram | Android Training in Sholinganallur | Android Training in Chennai

    ReplyDelete
  48. great article. Thanks for sharing java Configuration .its really helpful for me.java is the one of the most programming language build up on api....keep sharing on updated java tutorials?

    ReplyDelete
  49. Excellent and very cool idea and the subject at the top of magnificence and I am happy to this post..Interesting post! Thanks for writing it.What's wrong with this kind of post exactly? It follows your previous guideline for post length as well as clarity..
    Android Training in Chennai

    ReplyDelete
  50. For niit projects, assignments, cycle tests, lab@homes, c#, html, java, java script, sql, oracle and much more visit http://gniithelp.blogspot.in or https://mkniit.blogspot.in

    ReplyDelete
  51. Finding the time and actual effort to create a superb article like this is great thing. I’ll learn many new stuff right here! Good luck for the next post buddy..
    Java Training in Chennai

    ReplyDelete
  52. I have read your blog and i got a very useful and knowledgeable information from your blog.You have done a great job . If anyone want Java Training in Chennai, Please visit our page Selenium Training in Chennai

    ReplyDelete
  53. This article is so informatic and it really helped me to know more about the Selenium Testing. This selenium article helps the beginners to learn the best training course. So keep updating the content regularly.
    Selenium Training in Chennai | Best Selenium Training institute in Chennai | Selenium Course in Chennai

    ReplyDelete
  54. This comment has been removed by the author.

    ReplyDelete
  55. I just see the post i am so happy to the communication science post of information's.So I have really enjoyed and reading your blogs for these posts.Any way I’ll be replay for your great thinks and I hope you post again soon...
    Java Training in Chennai

    ReplyDelete



  56. It's interesting that many of the bloggers your tips helped to clarify a few things for me as well as giving.. very specific nice content. And tell people specific ways to live their lives.Sometimes you just have to yell at people and give them a good shake to get your point across.
    Web Design Company
    Web Development Company
    Web Development Company

    ReplyDelete
  57. Informative article, just what I was looking for.seo services chennai

    ReplyDelete

  58. This article is more interesting and content is really useful to me. Keep updating the content regularly and this software testing content is helped to know more detailed.Software testing training in Chennai | Software testing training | testing training in Chennai

    ReplyDelete
  59. Interesting article! Thank you for sharing them! I hope you will continue to have similar posts to share with everyone!
    happy wheels

    ReplyDelete
  60. This article provides the information about Java its key features and scope for java professionals. This information is really helpful me to know more about Java programming language. Java Training in Chennai | Java Training | Java Course in Chennai

    ReplyDelete
  61. This artical contain full of java basic and scopes.Thanks for sharing this artical.


    Android Training in Chennai

    ReplyDelete

  62. This is excellent information. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    Android Training in Chennai
    Ios Training in Chennai

    ReplyDelete
  63. This article provides the information about Java its key features and scope for java professionals. This information is really helpful me to know more about Java programming language
    Want to learn java through online in free basic..,


    Core Java Online Training

    ReplyDelete
  64. Nice it seems to be good post... It will get readers engagement on the article since readers engagement plays an vital role in every blog.. i am expecting more updated posts from your hands.
    Android App Development Company

    ReplyDelete
  65. Wonderful blog.. Thanks for sharing informative Post. Its very useful to me.

    Installment loans
    Payday loans
    Title loans

    ReplyDelete
  66. It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Most of ideas can be nice content.The people to give them a good shake to get your point and across the command.
    Java Training in Chennai

    ReplyDelete
  67. great and nice blog thanks sharing..I just want to say that all the information you have given here is awesome...Thank you very much for this one.
    Web Design Development Company
    Web design Company in Chennai
    Web development Company in Chennai

    ReplyDelete
  68. it is really amazing...thanks for sharing....provide more useful information...
    Mobile app development company

    ReplyDelete
  69. I have read your blog and i got a very useful and knowledgeable information from your blog.You have done a great job .


    Android Training in Chennai

    ReplyDelete
  70. This article is very much helpful and i hope this will be an useful information for the needed one. Keep on updating these kinds of informative things...
    Fitness SMS
    Salon SMS
    Investor Relation SMS

    ReplyDelete
  71. When I find challenge in trying to debug java codes, I often use the information published by the java professionals. I thus find information as this to be very useful and valuable in my programming life. Java is one of the most challenging programming languages and thus one will often need help while configuring Java SE or EE. Music school personal statement Editing

    ReplyDelete
  72. It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Thanks for sharing..,


    Core Java Online Training

    ReplyDelete
  73. Great post.first of all Thanks for writing such lovely Post! Earlier I thought that posts are the only most important thing on any blog.Thanks for sharing..


    Selenium Training in Bangalore

    ReplyDelete
  74. Useful post has been shared for our vision. i have enjoyed with your blog share. Its very useful to me... Thank you.. keep posting!!!
    Hadoop Training in Chennai | Salesforce Training in Chennai

    ReplyDelete
  75. hi admin.I liked this field.So i read your blog.The shared information is very effective for learners I have got some important suggestions from it.Thank you so much for sharing.Get more interesting details about...
    Big Data Analytics Training in Chennai | Java Training in Chennai

    ReplyDelete
  76. Pretty very amazing information! I read our blog all blog categories article very useful.I bookmarked to our info.Thanks for the amazing information.Java Training in Chennai
    Java Training Institute in Velachery

    ReplyDelete
  77. Your information about Java is useful for me to know more technical information. Really very informative post you shared here. Keep sharing this type of informative blog. If anyone wants to become a Java professional learn Java Training in Bangalore. Nowadays Java has tons of job opportunities for all professionals...Big Data Hadoop Training in Bangalore | Data Science Training in Bangalore

    ReplyDelete
  78. I wondered upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.
    iOS App Development Company

    ReplyDelete
  79. I have read your blog and i got a very useful and knowledgeable information from your blog.You have done a great job . If anyone want Java Training in Chennai, Please visit our page


    Selenium Training in Bangalore

    ReplyDelete
  80. Nice and good article.. it is very useful for me to learn and understand easily.. thanks for sharing your valuable information and time.. please keep updating.

    Java Training in chennai | PHP Training in chennai | Dot Net Training in chennai

    ReplyDelete
  81. Its a wonderful post and very helpful, thanks for all this information. You are including better information regarding this topic in an effective way.Thank you so much

    Installment loans
    Payday loans
    Title loans
    Cash Advances

    ReplyDelete
  82. Your information about Java is useful for me to know more technical information. Really very informative post you shared here. Keep sharing this type of informative blog. If anyone wants to become a Java professional learn


    Python Online Training

    ReplyDelete
  83. This comment has been removed by the author.

    ReplyDelete
  84. his article is so informatic and it really helped me to know more about the Selenium Testing. This selenium article helps the beginners to learn the best training course. So keep updating the content regularly.

    Android Training in Chennai

    ReplyDelete

  85. Interesting blog about apache tamaya new configuration which attracted me more.Spend a worthful time.keep updating more.
    MSBI Training in Chennai

    ReplyDelete
  86. A easy and exciting blog about java learning. Please comment your opinions and share..
    http://foundjava.blogspot.in

    ReplyDelete
  87. The Besant institute is well known institute in South India. Moreover is has its name popular all over India. The institute imparts IT training services to Private business enterprises and institutions and also to individuals. The center performs commendable jobin providing the best education to the students in their field of expertization.so join us besant technologies. Software Testing Training Institute in Chennai |
    Selenium Training Institute in Chennai |

    ReplyDelete
  88. It's interesting that many of the bloggers your tips helped to clarify a few things for me as well as giving.. very specific nice content. Want to build your website

    White Label Website Builder

    ReplyDelete
  89. Excellent post!!!. The strategy you have posted on this technology helped me to get into the next level and had lot of information in it. Selenium Training in Chennai | Java Training in Chennai

    ReplyDelete
  90. Nice blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it.
    Hadoop Training in Chennai

    ReplyDelete
  91. Finding the time and actual effort to create a superb article like this is great thing. I’ll learn many new stuff right here! Good luck for the next post buddy..

    White Label Website Builder

    ReplyDelete
  92. I wondered upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.

    Texting API
    Text message marketing
    Digital Mobile Marketing
    Sms API
    Sms marketing

    ReplyDelete
  93. It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Most of ideas can be nice content.The people to give them a good shake to get your point and across the command.

    Java Training in BTM Layout


    Java Training in Marathahalli

    ReplyDelete
  94. Thanks for sharing informative article. Download Windows 7 ultimate for free from getintopc. It helps you to explore full functionality of windows operating system.

    ReplyDelete
  95. Really impressive post. I read it whole and going to share it with my social circules. I enjoyed your article and planning to rewrite it on my own blog.
    my latest blog post | my latest blog post | my latest blog post | my latest blog post | my latest blog post | my latest blog post | my latest blog post

    ReplyDelete
  96. Interesting article... Thanks for sharing.....
    Android training

    ReplyDelete
  97. Nice it seems to be good post... It will get readers engagement on the article since readers engagement plays an vital role
    snapho

    ReplyDelete
  98. Nice blog. Thank you for sharing. The information you shared is very effective for learners.
    Spoken english Training in Bangalore

    ReplyDelete
  99. Your post about technology was very helpful to me. Very clear step-by-step instructions. I appreciate your hard work and thanks for sharing.
    Android Training in Chennai
    Android Course in Chennai

    ReplyDelete
  100. Nice blog. Thank you for sharing. The information you shared is very effective for learners.
    Best Oracle Training in Bangalore

    ReplyDelete
  101. Great Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.Cool stuff you have got and you keep update all of us.
    Hadoop Training in Chennai
    Big Data Training in Chennai
    Python Training in Chennai
    Python Training Centers in Chennai
    Data Science Training in Chennai
    Data Science Course in Chennai
    Data Analytics Training in Chennai
    Best AngularJS Training in Chennai
    AngularJS Training in Chennai
    QlikView Training in Chennai
    Informatica Training in Chennai

    ReplyDelete
  102. Good post and I like it very much. By the way, anybody try this app development company for iOS and Android? I find it is so professional to help me boost app ranking and increase app downloads.

    ReplyDelete
  103. I feel really happy to have seen your webpage and look forward to so
    many more entertaining times reading here. Thanks once more for all
    the details.


    AWS Training in Bangalore


    AWS Training in Bangalore

    ReplyDelete
  104. Great Information you are shared with us. check it once through MSBI Online Training Bangalore

    ReplyDelete
  105. The blog is very interesting and will be much useful for use.
    Thanks so much

    word cookies answersaz
    archery games
    scratch games

    ReplyDelete
  106. It's very interesting and useful for students
    Java Online Course

    ReplyDelete
  107. Your good knowledge and kindness in playing with all the pieces were
    very useful. I don’t know what I would have done if I had not
    encountered such a step like this.


    java training in chennai


    java Training in Bangalore

    ReplyDelete
  108. Nice Information. Thanks for sharing., thanks for sharing
    seo classes in Chennai

    ReplyDelete
  109. Awesome blog its really informative for me and other thanks for shearing this.

    white label website builder

    ReplyDelete
  110. Nice post about MSBI, looking for best msbi online training institute ?

    ReplyDelete
  111. Thanks. Nice blog!! Very useful information is providing by your blog. Great tutorial about
    Best digital marketing workshop in chennai

    ReplyDelete
  112. This is really a nice and informative, containing all information and also has a great impact on the new technology. Thanks for sharing it. Techavera providing the best MongoDB training course in Noida. Visit us For Quality Learning.

    white label website builder

    ReplyDelete
  113. This is really a nice and informative, containing all information and also has a great impact on the new technology. Thanks for sharing it
    digital marketing agency

    ReplyDelete
  114. Thanks for sharing about digital marketing,your blog always brought some useful information,i hope you will share more article like that...
    digital marketing classes in chennai

    ReplyDelete
  115. I read your blog this is really good and it helpful for learners. Thanks for sharing your thoughts with us Keep update on MSBI Online Training Bangalore

    ReplyDelete
  116. I am not sure the place you are getting your information, however good topic. I needs to spend some time studying more or understanding more. Thank you for wonderful information I was in search of this info for my mission.
    Online 3d printing
    3D printing in Coimbatore
    3D printing service in Coimbatore
    3D printing in Chennai

    ReplyDelete
  117. Ciitnoida provides Core and java training institute in

    noida
    . We have a team of experienced Java professionals who help our students learn Java with the help of Live Base Projects. The object-

    oriented, java training in noida , class-based build

    of Java has made it one of most popular programming languages and the demand of professionals with certification in Advance Java training is at an

    all-time high not just in India but foreign countries too.

    By helping our students understand the fundamentals and Advance concepts of Java, we prepare them for a successful programming career. With over 13

    years of sound experience, we have successfully trained hundreds of students in Noida and have been able to turn ourselves into an institute for best

    Java training in Noida.

    java training institute in noida
    java training in noida

    ReplyDelete
  118. The information which you have provided is very good. It is very useful who is looking for selenium Online Training Bangalore

    ReplyDelete
  119. Extraordinary and helpful article. Making content consistently is extremely intense. Your focuses are roused me to proceed onward.


    digital marketing

    ReplyDelete
  120. Magnificent design and great utilization of fluctuated media. Truly inside and out data also. Extremely like how you separate the points into a few subsections with their own pages.


    iphone 8 plus case

    ReplyDelete
  121. Great stuff. The content is so strong and obviously it will be a useful content for learners. Thanks for sharing your experience and knowledge.

    Java training in Chennai

    ReplyDelete
  122. Thanks for the informative article.This is one of the best resources I have found in quite some time.Nicely written and great info.I really cannot thank you enough for sharing.

    Herbalife in Chennai
    Wellnesscentres in Chennai
    Weight Loss in Chennai
    Weight Gain in Chennai

    ReplyDelete
  123. Nice Blog, When i was read this blog i learnt new things & its truly have well stuff related to developing technology, Thank you for sharing this blog.
    iPhone App Training Course
    Mobile App Training Tnstitutes

    ReplyDelete
  124. This was an nice and amazing and the given contents were very useful and the precision has given here is good.
    AWS Training in Chennai

    ReplyDelete
  125. Thanks for sharing information. Your web-site is very cool. I am impressed by the details that you have on this blog. It reveals how nicely you perceive this subject.. :)
    Java Training in Chennai | Java Training Institute in Chennai

    ReplyDelete
  126. interesting to learn about "Java Configuration" thannks for sharing.
    Data Science Training in Chennai

    ReplyDelete
  127. This was an nice and amazing and the given contents were very useful and the precision has given here is good.


    Bigdata training institute in bangalore

    ReplyDelete
  128. After I read and try to understand this article in conclusion amazingwe are generally grateful for the nearness of this article can incorporate impressively more learning for each one of us. thankful to you.


    Accountants Brighton

    ReplyDelete
  129. I've been surfing on the web over 3 hours today, yet I never found any fascinating article like yours. It's enough worth for me. As I would see it, if all web proprietors and bloggers made exceptional substance as you did, the net will be basically more productive than at whatever point in late memory.

    Brighton Accountants

    ReplyDelete
  130. Artificial intelligence Training in noida
    Artificial intelligence Training in noida-Artificial Intelligence Training in Noida, Artificial Intelligence Training classes in Noida, Artificial Intelligence Training classes in Noida, Artificial Intelligence Training

    by Real time ARTIFICIAL INTELLIGENCE Experts, Big-Data and ARTIFICIAL INTELLIGENCE Certification Training in Noida



    WEBTRACKKER TECHNOLOGY (P) LTD.
    C - 67, sector- 63, Noida, India.
    F -1 Sector 3 (Near Sector 16 metro station) Noida, India.

    +91 - 8802820025
    0120-433-0760
    0120-4204716
    EMAIL: info@webtrackker.com
    Website: www.webtrackker.com



    Our Other Courses:


    artificial intelligence Training in noida

    SAS Training Institute in Delhi

    SAS Training in Delhi

    SAS Training center in Delhi

    Sap Training Institute in delhi

    Sap Training in delhi

    Best Sap Training center in delhi

    Best Software Testing Training Institute in delhi

    Software Testing Training in delhi

    Software Testing Training center in delhi

    Best Salesforce Training Institute in delhi

    Salesforce Training in delhi

    Salesforce Training center in delhi

    Best Python Training Institute in delhi



    Python Training in delhi


    Best Android Training Institute In delhi


    Best Python Training center in delhi


    Android Training In delhi


    best Android Training center In delhi

    ReplyDelete

  131. Best Solidworks training institute in noida

    SolidWorks is a solid modeling computer-aided design (CAD) and computer-aided engineering (CAE) computer program that runs on Microsoft Windows. SolidWorks is published by Dassault Systems. Solid Works: well, it is purely a product to design machines. But, of course, there are other applications, like aerospace, automobile, consumer products, etc. Much user friendly than the former one, in terms of modeling, editing designs, creating mechanisms, etc.
    Solid Works is a Middle level, Main stream software with focus on Product development & this software is aimed at Small scale & Middle level Companies whose interest is to have a reasonably priced CAD system which can support their product development needs and at the same time helps them get their product market faster.

    Company Address:
    WEBTRACKKER TECHNOLOGY (P) LTD.
    C-67,Sector-63,Noida,India.
    E-mail: info@webtracker.com
    Phone No: 0120-4330760 ,+91-880-282-0025

    webtrackker.com/solidworks-training-Course-institute-in-noida-delhi

    ReplyDelete
  132. I've been surfing on the web more than 3 hours today, yet I never found any stupefying article like yours. It's imperatively worth for me. As I would see it, if all web proprietors and bloggers made confusing substance as you did, the net will be in a general sense more profitable than at whatever point in late memory.

    Tax Advisors

    ReplyDelete
  133. Data science Training Institute in Noida

    Webtrackker Data science Training Institute in Noida Accelerate your career in data science by starting from basics in Statistics, Data Management and Analytics to advanced topics like Neural Networks, Machine Learning and Big Data.



    http://webtrackker.com/Best-Data-Science-Training-Institute-in-Noida.php



    Data science Training Institute in Noida

    OUR OTHER COURCES

    SAS Training center in Delhi


    Best Software Testing Training Institute in delhi

    Best Salesforce Training Institute in delhi

    Best Python Training Institute in delhi



    ReplyDelete
  134. 3D Animation Training in Noida

    Best institute for 3d Animation and Multimedia

    Best institute for 3d Animation Course training Classes in Noida- webtrackker Is providing the 3d Animation and Multimedia training in noida with 100% placement supports. for more call - 8802820025.

    3D Animation Training in Noida

    Company Address:

    Webtrackker Technology

    C- 67, Sector- 63, Noida

    Phone: 01204330760, 8802820025

    Email: info@webtrackker.com

    Website: http://webtrackker.com/Best-institute-3dAnimation-Multimedia-Course-training-Classes-in-Noida.php

    ReplyDelete
  135. Graphics designing training institute in Noida
    Best Graphics training institute in Noida, Graphic Designing Course, classes in Noida- webtrackker is providing the graphics training in Noida with 100% placement supports. If you are looking for the Best Graphics designing training institute in Noida For more call - 8802820025.

    Graphics designing training institute in Noida, Graphics designing training in Noida, Graphics designing course in Noida, Graphics designing training center in Noida

    Company address:
    Webtrackker Technology
    C- 67, Sector- 63, Noida
    Phone: 01204330760, 8802820025
    Email: info@webtrackker.com
    Website: http://webtrackker.com/Best-institute-for-Graphic-Designing-training-course-in-noida.php

    ReplyDelete
  136. AWS Training in Bangalore - Live Online & Classroom
    myTectra Amazon Web Services (AWS) certification training helps you to gain real time hands on experience on AWS. myTectra offers AWS training in Bangalore using classroom and AWS Online Training globally. AWS Training at myTectra delivered by the experienced professional who has atleast 4 years of relavent AWS experince and overall 8-15 years of IT experience. myTectra Offers AWS Training since 2013 and retained the positions of Top AWS Training Company in Bangalore and India.

    IOT Training in Bangalore - Live Online & Classroom
    IOT Training course observes iot as the platform for networking of different devices on the internet and their inter related communication. Reading data through the sensors and processing it with applications sitting in the cloud and thereafter passing the processed data to generate different kind of output is the motive of the complete curricula. Students are made to understand the type of input devices and communications among the devices in a wireless media.

    ReplyDelete
  137. Your new valuable key points imply much a person like me and extremely more to my office workers. With thanks from every one of us.

    Best AWS Training in Chennai | Amazon Web Services Training in Chennai

    ReplyDelete
  138. Its really an Excellent post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog. Thanks for sharing....

    Seo Experts
    Seo Company
    Web Designing Company
    Digital Marketing
    Web Development Company
    App Development

    ReplyDelete
  139. Appreciation for really being thoughtful and also for deciding on certain marvelous guides most people really want to be aware of.

    Spark Training in Chennai
    Spark with Scala Training in Chennai

    ReplyDelete
  140. Webtrackker Technology is IT Company and also providing
    the Solidwork training in Noida at running project by
    the real time working trainers. If you are looking for
    the Best Solidwork training institute in Noida then you can contact
    to webtrackker technology.
    ads
    Webtrackker Technology
    C- 67, Sector- 63 (Noida)
    Phone: 0120-4330760, 8802820025

    8802820025
    Solidwork training institute in Noida

    ReplyDelete
  141. Latest News in Hindi

    Latest News in Hindi- Hindustan channel is the best online web portal in india where you read the all latest indian news in hindi. if you are looking the Latest News in Hindi, live news channel, hindi news channel, live news channels in hindi, live hindi channels then hindustan channel is best for you.
    Latest News in Hindi

    Company address:
    C- 67, Sector- 63, Noida
    Phone: 01204330760, 8802820025


    URL: https://hindustanchannel.com

    ReplyDelete
  142. Nice post! definitively I will come back to update me on this technology Thanks for the informative post. Keep doing.
    JAVA Training Chennai
    JAVA J2EE Training in Chennai
    JAVA J2EE Training Institutes in Chennai
    Java training institutes in chennai

    ReplyDelete
  143. Take Part in KrogerFeedback Survey And Win Fuel Points - krogerfeedback

    ReplyDelete
  144. I appreciate your efforts because it conveys the message of what you are trying to say. It's a great skill to make even the person who doesn't know about the subject could able to understand the subject . Your blogs are understandable and also elaborately described. I hope to read more and more interesting articles from your blog. All the best.
    python training in velachery | python training institute in chennai



    ReplyDelete
  145. Selenium is one of the most popular automated testing tool used to automate various types of applications. Selenium is a package of several testing tools designed in a way for to support and encourage automation testing of functional aspects of web-based applications and a wide range of browsers and platforms and for the same reason, it is referred to as a Suite.

    Selenium Interview Questions and Answers
    Javascript Interview Questions
    Human Resource (HR) Interview Questions

    ReplyDelete
  146. Excellent informative blog, Thanks for sharing.
    Web Design Training

    ReplyDelete
  147. I simply want to give you a huge thumbs up for the great info you have got here on this post.
    Java training in Tambaram | Java training in Velachery

    Java training in Omr | Oracle training in Chennai

    ReplyDelete
  148. Wow it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot. it is really explainable very well and i got more information from your blog.

    rpa interview questions and answers
    automation anywhere interview questions and answers
    blueprism interview questions and answers
    uipath interview questions and answers
    rpa training in chennai

    ReplyDelete